C语言。将一笔零钱(大于8分,小于1元,精确到分)换算成1分,2分,5分的硬币组合。

来自:    更新日期:早些时候
C语言编程:将一笔钱(大于8分,小于1元,精确到分)换算成1分,2分和5分的硬币组合。~

这个题数据比较大,需要动态规划来求解。。首先题目要求每种硬币至少有一枚,那么先取出1分,2分和5分各一枚,这样刚好是8分钱。题目描述说了这比钱大于8分,小于1元,所以没有影响,剩下有多少种方式就动态规划(DP)求解吧。不知道DP你会不会,不行的话我等下给你一下代码参考好了……先举样例说明一下,处理N=10,10-8=2,也就是付款=2分的方式有多少,那么明显就是2*1或者1*2两种

#include void func(int n){ int v1, v2, v5; int ,i, j, k; int num; v1 = 1; v2 = 2; v5 = 5; num = 0; for (i = 1; i = 8 && n <= 100) { func(n); } return 0 ;}

这个,有一个更为全面的代码,实现的功能:

  1. 硬币的个数;

  2. 硬币组合的方式

#include <stdio.h>
intmain()
{
    int n;//用于用户输入的分钱数
    int x,y,z;//x是1分,y是2分,z是5分(硬币个数)
    int num=0;//用于保存有多少种方法
    printf("请输入金额:");
    scanf("%d",&n);
    for(x=1;x<=n;x++)
    for(y=1;y<=n/2;y++)
    for(z=1;z<=n/5;z++)
    {
        if(x+2*y+5*z==n)
        {
            printf("1分%d个,2分%d个,5分%d个
",x,y,z);
            num++;
        }
    }
    printf("一共有%d种方法
",num);
}

运行的结果:



#include<stdio.h>
int main()
{
int x,a,b,c,count=0;
scanf("%d",&x);
for(a=19;a>=1;a--){
for(b=49;b>=1;b--){
for(c=99;c>=1;c--){
if(5*a+2*b+c==x){
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",a,b,c,a+b+c);
count++;
}
}
}
}
printf("count = %d",count);
return 0;
}

答:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int money,a,b;
scanf("%d",&money);
a=money%5;
printf("%d枚五分\n“,(money-a)/5);
b=a%2;
printf("%d枚二分\n%d枚一分”,(a-b)/2,b);


C语言。将一笔零钱(大于8分,小于1元,精确到分)换算成1分,2分,5分的硬币组合。视频

相关评论:
  • 18441072843c语言,换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和...
    苍庾霍k <= n\/v1; k++) { if ((i * v5 + j * v2 + k * v1) == n) { printf("方法:1分数量: %d 2分数量: %d 5分数量: %d\\n", k, j, i); num++; } } } } printf("总共有 %d 种换法\\n", num);}int main(){ scanf(...

  • 18441072843C语言。将一笔零钱(大于8分,小于1元,精确到分)换算成1分,2分,5分的...
    苍庾霍这个,有一个更为全面的代码,实现的功能:硬币的个数;硬币组合的方式 include <stdio.h>intmain(){ int n;\/\/用于用户输入的分钱数 int x,y,z;\/\/x是1分,y是2分,z是5分(硬币个数) int num=0;\/\/用于保存有多少种方法 printf("请输入金额:"); scanf("%d",&n); ...

  • 18441072843将一笔零钱(大于8分,小于1元, 精确到分)换成5分、2分和1分的硬币。
    苍庾霍int main(void){ int count, fen1, fen2, fen5, money;int repeat, ri;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%d", &money);count=0;for (fen5 = money \/5; fen5 >= 1; fen5--){ for (fen2 = money \/2; fen2 >= 1; fen2--){ for...

  • 18441072843程序题换硬币,将一笔零钱8分到一元,换算成一分二分五分硬币组合,输入金 ...
    苍庾霍void main(){ int i,j,k,sum,x=0;printf("请输入总金额(单位为分):");scanf("%d",&sum);if(sum<8||sum>100)printf("输入超出题目范围");printf("可行的方案有:\\n");for(i=0;i<=20;i++)for(j=0;j<=50;j++)for(k=0;k<=100;k++)if(5*i+2*j+k==sum){ printf...

  • 18441072843急求一个c语言源代码关于找零钱问题的
    苍庾霍我们知道人民币有1、2、5、10、20、50、100这几种面值。现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。include<stdio.h> int main(){int a,b,c,d,e,f,g,n,count=0;printf(" please input n:\\n");scanf("%d",&n);for(a=n\/100;a>=0...

  • 18441072843C语言 换零钱
    苍庾霍void main(){ int i,j,n,s=0;for(i=0;i<=20;i++) \/\/5分最多换二十个 for(j=0;j<=50;j++) \/\/2分最多换五十个 for(n=0;n<=100;n++) \/\/1分可以换一百个 if( 5*i+2*j+1*n == 100){ printf("%d %d个 , %d %d个 , %d %d个",5,i,2,j,1,n);printf...

  • 18441072843c语言怎么换钱
    苍庾霍{ int i,j,k;int rmb=1000;int sum=0;for(i=1;;i++){ for(j=1;;j++){ for(k=1;;k++){ if((i+2*j+5*k)==1000)sum++;} } } printf("%d",sum);} 输入在一行中给出待换的零钱数额x∈(8,100)。要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。

  • 18441072843C语言题《零钱换整钱》
    苍庾霍这个问题要去问语文老师了。从这句话 若干张面值为 10 元的纸币,一般的意思就是说,不超过10张,才用 “若干”如此10元钱的不超过10张,自然都小于100元咯。再细分一下吧 Z< 100, 1元钱的厚度最大,而题目是相等高度自然 y < 100, x <100 ...

  • 18441072843用C语言编写找零钱问题,谢谢!!
    苍庾霍\/\/下面是C语言的,更直观,不需要引用 include <stdio.h> void compute_coins(int coin_value,int number,int amount_left){ if(amount_left >= coin_value)compute_coins(coin_value, number+1, amount_left-coin_value);else{ printf("%d : %d\\n", coin_value, number);switch(coin_value...

  • 18441072843用C语言做“换零钱问题。将一元钱换成1分,2分或5分的零钱有多少种换法...
    苍庾霍include "stdio.h"\/\/穷举法 void main(){ int i,j,n,s=0;for(i=0;i<=20;i++) \/\/5分最多换二十个 for(j=0;j<=50;j++) \/\/2分最多换五十个 for(n=0;n<=100;n++) \/\/1分可以换一百个 if( 5*i+2*j+1*n == 100){ printf("%d %d个 , %d %d个 , %d %d个...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网