思路:根据题目分解程序
第一步:通过询问得到一个回答,即糖果的数量n
第二步:依次询问得到糖果的排列顺序,为了简单可以通过重复执行n次得到n个数,并根据对应的颜色,将其喜爱值存入列表。(如果通过一行数字,用空格分隔全部输入的话,可以参考“信息奥赛基础习题:输出第二个整数【scratch解法】”)
示例比如用户依次输入的数字是0、2、3、4、2,那么根据喜爱值存入列表的数据就应该为:5、10、7、1、10
第三步:根据题目描述,通过循环罗列出所有可能性并计算喜爱值,将喜爱值与最大值比较,如果大于最大值则修改最大值为当前的喜爱值,所有可能性计算完就得到了最大的喜爱值。
那如何罗列所有可能性呢?还是用上面的数字为例: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
依次类推,编写程序就是:
第四步:考虑黄色在一段的中间,飞宇会自动忽略它(喜爱值0),因此计算喜爱值的时候要排除黄色
加上条件语句后:
第五步:考虑对下一颗糖喜爱值的影响:蓝色:10,太喜欢了,要吃的下一颗糖的喜爱值+1;紫色:1,不太喜欢,要吃的下一颗糖喜爱值-2。
定意变量k,初始值为0,判断当前糖果喜爱值,设置k的值,用于下次计算。
再次修改程序如下:
这样我们的程序就完成了,测试一下,输入5个数:0 0 1 2 2,结果是28
程序源码下载:http://kidscode.cn/shows3/11122
本站内容未经许可,禁止任何网站及个人进行转载。