正文

2005年7月4日第26期电脑报编程点将台2005-07-07 12:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/2625.html

分享到:

题目:
某人有四张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;
}

阅读(4708) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册