定义一个五元素一维数组,a[0]=0,输入其余四个值,分别是邮票面值。五张邮票所能组成的邮资等于五个变量之和,每一个变量都能在前面定义的一维数组里相互独立地取值,这样通过一个五维的循环就能讨论所有的情况。为了减少重复讨论,可以要求用户按大小顺序输入邮票面值,程序相应改动,这里不好说清。
给你一个绝对能用的程序。楼下的不要学我。
#include
#include
int a[5]={0};
int b[126];
int search(int num)
{
int i,j=0;
for(i=1;i<126;i++)
{
if(b[i]==num)
j++;
}
return (j);
}
void main()
{
for(;!(a[1]
{
printf("请按从小到大的顺序输入四种邮票面值:\n");
for(int i=1;i<5;i++)
{
scanf("%d",&a[i]);
}
}
printf("\n");
int i,j,k,m,n;
int t=0;
for(i=0;i<=4;i++)
{
for(j=0;j<=i;j++)
{
for(k=0;k<=j;k++)
{
for(m=0;m<=k;m++)
{
for(n=0;n<=m;n++)
{
b[t]=a[i]+a[j]+a[k]+a[m]+a[n];
t++;
}
}
}
}
}
k=m=n=0;
for(i=a[1];i<=a[4]*5;i++)
{
if(t=search(i))
{
printf("可以组成邮资%d,有%d种方法\n",i,t);
m++;
}
else
{
if(m>k)
{
k=m;
n=i;
}
m=0;
}
}
if(m==a[4]*5-a[1]+1)
printf("\n可组成邮资的一个最大连续区间为[%d,%d]\n",a[1],a[4]*5);
else
printf("\n可组成邮资的一个最大连续区间为[%d,%d]\n",n-k,n-1);
system ("pause");
}