某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?
#include<iostream>
using namespace std;
int main()
{
int a[50],b=0,k;
int i,j,sum;
for(i=0;i<=4;i++)
for(j=0;j<=3;j++)
{
sum=3*i+5*j;
for(k=0;k<b;k++)
{if(sum==a[k])
break; }
if(sum!=0&&k==b)
{a[b]=sum;
b++; }
}
cout<<b<<endl;
}
提示:
重点是排除重复的邮资
假如某一次出现了重复的数字,即sum==a[k],那么跳出循环,k没有加1,k就一定小于b
则下面if语句的表达式为假,跳过if语句块,这次的sum值不会计入,并且b也不会加1。
注意循环里的k每次都要从0开始,才能保证不重复