在一個陌生的國度,有5種不同的硬幣單位:15、23、29、41和67(分)。尋找所有組成18元8分(即1808分)的可能組合。假定對於所有面值的硬幣你都有足夠的硬幣。
利用窮舉法羅列出所有的可能。
#include <iostream>
int Fun()
{
int count = 0;
for(int i1=0;i1<=1808/15;i1++)
{
for(int i2=0;i2<=1808/15;i2++)
{
if(i1*15+i2*23>1808)
{
continue;
}
for(int i3=0;i3<=1808/15;i3++)
{
if(i1*15+i2*23+i3*29>1808)
{
continue;
}
for(int i4=0;i4<=1808/41;i4++)
{
if(i1*15+i2*23+i3*29+i4*41>1808)
{
continue;
}
for(int i5=0;i5<=1808/67;i5++)
{
if(i1*15+i2*23+i3*29+i4*41+i5*67==1808)
{
printf("15:%d,23:%d,29:%d,41:%d,67:%d\n",i1,i2,i3,i4,i5);
count++;
}
else if(i1*15+i2*23+i3*29+i4*41+i5*67>1808)
{
continue;
}
}
}
}
}
}
return count;
}
int main()
{
printf("%d\n",Fun());
}
輸出結果總共有19551種
源代碼如下:
#include
int Fun()
{
int count = 0;
for(int i1=0;i1<=1808/15;i1++)
{
for(int i2=0;i2<=1808/15;i2++)
{
if(i115+i223>1808)
{
continue;
}
for(int i3=0;i3<=1808/15;i3++)
{
if(i115+i223+i329>1808)
{
continue;
}
for(int i4=0;i4<=1808/41;i4++)
{
if(i115+i223+i329+i441>1808)
{
continue;
}
for(int i5=0;i5<=1808/67;i5++)
{
if(i115+i223+i329+i441+i567==1808)
{
printf(“15:%d,23:%d,29:%d,41:%d,67:%d\n”,i1,i2,i3,i4,i5);
count++;
}
else if(i115+i223+i329+i441+i5*67>1808)
{
continue;
}
}
}
}
}
}
return count;
}
int main()
{
printf("%d\n",Fun());
}