题目:
某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?
这一道题就是我的C语言程序百例中的第72道,我稍微看了一下,好像我写的程序好像更简单。
/*算法分析:
从四张3分和三张5分中任取一张或若干张得到的最大邮资为27,即所得邮资3——27之间,故用数组XX[28]标志邮资是否可以得到,当某一位置的邮资可以取得时则数组在这个位置的值为1,否则为0;利用二重循环可以取所有可能的邮资值。
采用C++编程,在VC++6.0中通过运行,结果是19
*/
#include<iostream.h>
void main()
{
int i,j,XX[28],count=0;
for(i=0;i<28;i++)
XX[i]=0;
for(i=0;i<=4;i++)
for(j=0;j<=3;j++)
if(XX[3*i+5*j]==0)XX[3*i+5*j]=1;
for(i=1;i<28;i++)//i从1开始取值是因为至少要从这些邮票中取一张
if(XX[i]==1)count++;
cout<<count<<endl;
}
若要输出所有可能的邮资,则扩展为:
#include<iostream.h>
void main()
{
int i,j,XX[28],count=0;
for(i=0;i<28;i++)
XX[i]=0;
for(i=0;i<=4;i++)
for(j=0;j<=3;j++)
if(XX[3*i+5*j]==0)XX[3*i+5*j]=3*i+5*j;
for(i=1;i<28;i++)//i从1开始取值是因为至少要从这些邮票中取一张
if(XX[i]!=0)
{
count++;
cout<<i<<" , ";
}
cout<<"\nThe number is: "<<count<<endl;
}
正文
2005年7月4日第26期电脑报编程点将台2005-07-07 12:00:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/xiangyu/2625.html
阅读(4789) | 评论(3)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论