Xcode写C++(程序练习6)

在一个陌生的国度,有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(i1
15+i223+i329+i441>1808)
{
continue;
}
for(int i5=0;i5<=1808/67;i5++)
{
if(i1
15+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());
}

原创文章 6 获赞 13 访问量 169

猜你喜欢

转载自blog.csdn.net/Mugler_/article/details/106165779