思路:根据题目分解程序

第一步:通过询问得到一个回答,即糖果的数量n

scratch算法练习-彩虹糖【解说】

第二步:依次询问得到糖果的排列顺序,为了简单可以通过重复执行n次得到n个数,并根据对应的颜色,将其喜爱值存入列表。(如果通过一行数字,用空格分隔全部输入的话,可以参考“信息奥赛基础习题:输出第二个整数【scratch解法】”)

scratch算法练习-彩虹糖【解说】

示例比如用户依次输入的数字是0、2、3、4、2,那么根据喜爱值存入列表的数据就应该为:5、10、7、1、10

scratch算法练习-彩虹糖【解说】

第三步:根据题目描述,通过循环罗列出所有可能性并计算喜爱值,将喜爱值与最大值比较,如果大于最大值则修改最大值为当前的喜爱值,所有可能性计算完就得到了最大的喜爱值。

那如何罗列所有可能性呢?还是用上面的数字为例:0、2、3、4、2

首先从第一颗开始吃,可能性有:

0

0、2

0、2、3

0、2、3、4

0、2、3、4、2

然后是从第二颗开始吃,可能性有:

2

2、3

2、3、4

2、3、4、2

依次类推,编写程序就是:

scratch算法练习-彩虹糖【解说】

第四步:考虑黄色在一段的中间,飞宇会自动忽略它(喜爱值0),因此计算喜爱值的时候要排除黄色

加上条件语句后:

scratch算法练习-彩虹糖【解说】

第五步:考虑对下一颗糖喜爱值的影响:蓝色:10,太喜欢了,要吃的下一颗糖的喜爱值+1;紫色:1,不太喜欢,要吃的下一颗糖喜爱值-2。

定意变量k,初始值为0,判断当前糖果喜爱值,设置k的值,用于下次计算。

再次修改程序如下:

scratch算法练习-彩虹糖【解说】

这样我们的程序就完成了,测试一下,输入5个数:0 0 1 2 2,结果是28

scratch算法练习-彩虹糖【解说】

程序源码下载:http://kidscode.cn/shows3/11122

本站内容未经许可,禁止任何网站及个人进行转载。