整钱换零钱问题。把n元兑换成1分,2分,5分的硬币,共有多少种兑换方法,并列出所有可能性?(用穷举法求解)
#include<stdio.h>
int main()
{
int i,j,k;
int n;
scanf("%d",&n);
int sum=0;
for(i=1;i<n*1000;i++)
{
for(j=1;j<n*500;j++){
for(k=1;k<n*200;k++){
if((i+2*j+5*k)==n*1000){
sum++;
printf("%d个一分,%d个两分,%d个五分\n",i,j,k);
}
}
}
}
printf("共有%d种兑换方法\n",sum);
return 0;
}
温馨提示:下面代码a默认等于1,是1元进行多种硬币兑换,然后列举出可能的兑换,如果需要自定义,只需要解除//scanf("%d",&a);注释即可
#include <stdio.h>
int main()
{
int a=1;
//scanf("%d",&a);
int n=a*100;
int i,j;
int sum = 0;
for (i = 0; i <= n/20 ; i++) {
for (j = 0; j <= n - i*5; j++) {
sum++;
if(n-5*i - 2*j>=0)
printf("%d 个5分,%d个2分,%d个1分\n", i,j, n-5*i - 2*j);
}
}
printf("一共%d种方法\n", sum);
getchar();
return 0;
}
测试结果如下
#include"stdio.h"
int main()
{
int n,count=0,x,y,z;
scanf("%d",&n);
n = n*100;
for(z=0;z<=n/5;z++)
for(y=0;y<=n/2;y++)
for(x=0;x<=n;x++)
if(x+2*y+5*z==n)
{
printf("1*%d+2*%d+5*%d=%d\n",x,y,z,n);
count++;
}
printf("count=%d\n",count);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int money;
int sum = 0; //换算的种数
int a = 1, b = 2, c = 5; //a,b,c分别表示1分,2分,5分
cout << "输入金额:";
cin >> money;
/*ci,bi,ai分别表示5分,2分,1分的张数*/
for (int ci = 0; ci <= money / c; ci++)
for (int bi = 0; bi <= (money - ci * 5) / b; bi++)
for (int ai = 100; ai >= 0; ai--)
{
if (100 == ci * 5 + bi * 2 + ai)
{
sum++;
cout << "5分(张):" << ci << " 2分(张):" << bi << " 1分(张):" << ai << endl;
}
}
cout << "一共有" << sum << "种换法" << endl;
return 0;
}