习题4-5 换硬币 (20分)

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

输入格式:

输入在一行中给出待换的零钱数额8。

输出格式:

要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

输入样例:

13

输出样例:

fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
#include<stdio.h>
int main(void)
{
    int i,j;
    int a,b,c,n;
    int count=0;

    scanf("%d",&n);
    a=n/5;
    for(i=a;i>=1;i--){
        b=n-i*5;
        for(j=b;j>=1;j--){
            c=b-j*2;
            if(c>0){
                printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,c,i+j+c);
                count++;
            }
        }
    }
    printf("count = %d",count);

    return 0;
}

原文地址:https://www.cnblogs.com/Kimsohyun/p/12578901.html

时间: 2024-10-17 16:14:53

习题4-5 换硬币 (20分)的相关文章

PTA 7-1 换硬币 (20分)

将一笔零钱换成5分.2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额8. 输出格式: 要求按5分.2分和1分硬币的数量依次从大到小的顺序,输出各种换法.每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”.最后一行输出“count = 换法个数”. 输入样例: 13 输出样例: fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen

习题11-8 单链表结点删除 (20分)

习题11-8 单链表结点删除 (20分) 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *deletem( struct ListNode *L, int m ); 函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表

某种 找换硬币问题的贪心算法的正确性证明

一,问题介绍 最近一直在看贪心算法的正确性证明(如何证明贪心算法获得的解一定是最优解),感觉“剪枝”技巧用得比较多.再看了下<算法导论>中贪心算法一章里面的一个练习---找换硬币问题.这个问题对于某些 面值的硬币 是有最优解的,故记录下其中的一些证明思路. 考虑用最少的硬币数 来找 n 分钱的问题,假设每个硬币的值都是整数. 如果可换的硬币的单位是 c 的幂,也就是 c0,c1,... ,ck ,其中整数 c>1,k>=1 证明贪心算法总可以产生一个最优解. 二,找换硬币的贪心策略

数列求和-加强版(20 分) C

习题2.3 数列求和-加强版 (20 分) 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+?+AA?A(N个A).例如A=1, N=3时,S=1+11+111=123. 输入格式: 输入数字A与非负整数N. 输出格式: 输出其N项数列之和S的值. 输入样例: 1 3 输出样例: 123 #include <stdio.h> typedef int ElementType; typedef int Position; typedef int C

PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)

1104 Sum of Number Segments (20分)   Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For example, given the sequence { 0.1, 0.2, 0.3, 0.4 }, we have 10 segments: (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0

换硬币

设有n种不同的硬币,各个硬币的面值存在数组w[i]中,现在要用这些硬币来找钱,可以使用各种面值的硬币的个数存于数组s[i]中,设计一个用最少硬币找钱的m的方法. package 换硬币; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main { public static void main(Strin

找换硬币问题 与 0-1背包问题区别

之所以再写一篇Blog,是因为现实中很多问题都可以转化成“找换硬币”问题 和 “0-1”背包问题.因此,需要细细理解. 其次,在“参考资料”中汇总关于 贪心算法与动态规划的一些Blog及学习资料. 区别: 其实最大的区别就是:找换硬币问题中的 某类硬币 是可以多次选择的.而对于0-1背包问题,某物品要么选,要么不选,选了之后,它就“没了”.当然,有0-1背包问题的变形--完全背包问题--某(某类)物品有多个,可重复选. 第二,就是选择的权衡.0-1背包问题,还有个价值属性,在选择的时候,是考虑价

换硬币问题

[问题] 想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法. const int N = 100; int dimes[] = {1, 2, 5, 10}; int arr[N+1] = {1}; int coinExchange(int n) //动态规划 { int i, j; for (i = 0; i < sizeof(dimes)/sizeof(int); i++) { for (j = dimes[i]; j <= n; j++) arr[j] += arr[j-d

PTA-C-4-7 统计某类完全平方数 (20分)

4-7 统计某类完全平方数   (20分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数.如果N满足条件,则该函数必须返回1,否则返回0. 裁判测试程序样例: #include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int ma