为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

砝码称重

2017-10-30 2页 doc 13KB 16阅读

用户头像

is_482581

暂无简介

举报
砝码称重砝码称重 设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重?1000g),要求: 输入: a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个) 输出: Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 输入样例:1 1 0 0 0 0 输出样例:Total=3,表示可以称出1g,2g,3g三种不同的重量 题解 设 const num:array[1..6] of shortint=(1,2,3,5,1...
砝码称重
砝码称重 设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重?1000g),要求: 输入: a1 a2 a3 a4 a5 a6(示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个) 输出: Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 输入样例:1 1 0 0 0 0 输出样例:Total=3,表示可以称出1g,2g,3g三种不同的重量 题解 设 const num:array[1..6] of shortint=(1,2,3,5,10,20); ,砝码的重量序列, var a:array[1..6] of integer; ,,种砝码的个数, visited:array[0..1000] of boolean; ,重量的访问序列,防止重复, no:array[0..1000] of integer; ,n0[0]—不同重量数;n0[j]—第j种重量(,?j?no[0]), total,i,j,k:integer; {total—目前称出的重量} 我们按照第,种砝码,第,种砝码,……第,种砝码的顺序。在分析第i种砝码的放置时,依次在现有的不同重量的基础上,放,块、,块、……a[i]块,产生新的不同重量。 n0[n0[0]+1]=total?total=n0[j]+k*num[i],visited[total]=false,,?i ?6,,?j?no[0], ,?k?a[i] 阶段i: 分析第i种砝码(,?i?6); 状态j:枚举现有的不同重量(,?j?no[0]); 决策k:在现有重量的基础上放k块第i种砝码,产生重量n0[j]+k*num[i](,?k?a[i]); 计算过程如下: fillchar(visited,sizeof(visited),false); write(’a1-a6:’);for i?1 to 6 do read(a[i]),输入,种砝码的个数, no[0] ?1;no[1] ?0; ,产生第,种重量,, for i?1 to 6 do ,阶段:分析第i种砝码, for j?1 to no[0] do ,状态:枚举现有的不同重量, for k?1 to a[i] do ,决策:在现有重量的基础上放k块第i种砝码, begin total?no[j]+k*num[i]; ,产生重量, if not visited[total] then ,若该重量未产生过,则设访问标志, begin visited[total] ?true; inc(no[0]); ,新重量进入n0序列, no[no[0]] ?total; end;,then, end;{for} writeln(no[0]-1); {输出不同重量的个数}
/
本文档为【砝码称重】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索