内容正文:
用算法解决问题的过程
用计算机解决问题时,由于实际问题情境的复杂性,需要先对实际问题进行抽象与建模,再根据建立的计算模型设计算法,并将算法用合适的方式加以准确描述。
“动动有奖”是某手机走路计步器程序(程序界面如图所示),它能根据系统传递给它的走路步数给运动者奖励,运动者可以用累计的“奖金”去换取软件开发商提供的各种体育用品。具体的奖励规则如下:
1,每天走路的前1000步奖励0.3金,之后每2000步奖励0.1金(不足2000步没有奖励),每天最高奖励不超过3金。
2,每天必须到计步器页面点击“领奖”按钮,才能领取昨日走路奖金。
3,如果连续3天领奖成功,从第4天起走路奖金翻1倍(乘以2),每天最高奖励不超过6金。翻倍期间若有1天没有领奖(即连续每天领奖行为中断),则翻倍权益取消,重新连续3天领奖成功才能继续翻倍。
第一步:抽象与建模
抽象与建模指的是从现实项目的真实情境中提炼出核心的要素并加以确定或假设,最终定义出一个有明确已知条件和求解目标的问题,并用数学符号描述解决该问题的计算模型。
1、提炼核心要素并加以确定或假设
用变量x来表示每天走路的步数,用F表示是否成功领取了每天的奖金(1表示成功领取,0表示没有领取)。
2、用数学符号描述解决问题的计算模型
第二步:设计算法
对任何数据的处理,总体上都需要经历下列三个步骤:
①输入数据。
②处理数据。
③输出处理结果。
按照“自顶向下、逐步细化”的结构化程序设计思想,对前面的算法进行如下细化:
①输入总天数n
②表示天数的变量i初始化为1。
③若i<=n,则转④,否则转⑦。
④输入第i天的数据(包括第i天走路步数Xi,是否成功领取第i天“奖金”的标记F)
⑤根据当前输入的数据Xi,Fi,统计该天领取的奖金并累加到总奖金total中。
⑥表示天数的变量i增加1,然后转③。
⑦输出变量total的值。
第三步:描述算法
用流程图来描述解决该问题的算法。为了判断“奖金”是否翻倍,用变量c保存连续成功领奖的天数。
某市即将对居民实行一户一表阶梯电价,电费计算方式如下:月用电量在1-50千瓦时部分不调价;月用电量在51-200千瓦时部分,电价每千瓦时上调0.03元;月用电量超过200千瓦时部分,电价每千瓦时上调0.10元。
请完成以下任务:
(1)分析问题,提炼问题中涉及的数据,写出计算用户电费的表达式。
(2)确