zoukankan      html  css  js  c++  java
  • hdu 1284 分硬币 && uva 147

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        unsigned long long int dp[32780];
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        for(int i=1;i<=3;i++)
            for(int j=i;j<32780;j++)
                dp[j]=dp[j]+dp[j-i];
        int n;
        while((scanf("%d",&n))!=EOF)
        {
            printf("%I64d
    ",dp[n]);
        }
        return 0;
        return 0;
    }
    View Code

     

    这两道题基本思路是一样的,不过uva147的输出实在是个大坑,因为double的问题,所以考虑精度的损失。

    代码中的输出部分被我注释掉的那一部分是错误的输出,格式什么的都是正确的,但是存在精度的损失。应该注意一下

    hdu1284

     

    Description

    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
     

    Input

    每行只有一个正整数N,N小于32768。
     

    Output

    对应每个输入,输出兑换方法数。
     

    Sample Input

    2934 12553
     

    Sample Output

    718831 13137761
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        unsigned long long int dp[30005];
        int money[]={10000,5000,2000,1000,500,200,100,50,20,10,5};
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        //cout<<money[10]<<endl;
        for(int i=10;i>=0;i--)
        {
            for(int j=money[i];j<30005;j++)
    
            {
                dp[j]=dp[j-money[i]]+dp[j];
            }
        }
        //cout<<dp[0]<<dp[5]<<dp[10]<<dp[15]<<endl;
        double n;
    
        //cin>>n;
        //cout<<dp[5]<<endl;
        //cout<<dp[10020]<<endl;
        int a,b;
        while((scanf("%d.%d",&a,&b))!=EOF&&a+b)
         {
              /*  n=n*100;
                cout<<n;
                int m=n;
         printf("%6.2lf%17I64d
    ",n/100,dp[m]);*/
             int n=a*100+b;//cout<<n<<endl;
        double ans=n*1.0/100.0;
        printf("%6.2lf%17lld
    ",ans,dp[n]);
         }
    
        return 0;
    }
    View Code
    uva 147

    Description

    Download as PDF
     

    New Zealand currency consists of $100, $50, $20, $10, and $5 notes and $2, $1, 50c, 20c, 10c and 5c coins. Write a program that will determine, for any given amount, in how many ways that amount may be made up. Changing the order of listing does not increase the count. Thus 20c may be made up in 4 ways: 1 tex2html_wrap_inline25 20c, 2 tex2html_wrap_inline25 10c, 10c+2 tex2html_wrap_inline25 5c, and 4 tex2html_wrap_inline25 5c.

    Input

    Input will consist of a series of real numbers no greater than $300.00 each on a separate line. Each amount will be valid, that is will be a multiple of 5c. The file will be terminated by a line containing zero (0.00).

    Output

    Output will consist of a line for each of the amounts in the input, each line consisting of the amount of money (with two decimal places and right justified in a field of width 6), followed by the number of ways in which that amount may be made up, right justified in a field of width 17.

    Sample input

    0.20
    2.00
    0.00

    Sample output

      0.20                4
      2.00              293
     
    dp[j]=dp[j]+dp[j-i],j表示钱数,i表示价值。首先i=1,这样得到不同的钱数被全部分为1的硬币的兑换法,然后把大于2的数分解为 2+i,即2+i的钱分为一个2加第i个钱全部
    为1的分法,这么递推下去。
  • 相关阅读:
    Python 正则表达式匹配两个指定字符串中间的内容
    Switch Case 和 If Else
    MYSQL LETT/RIGHT/INNER/FUll JOIN 注意事项
    MYSQL 批处理 Packet for query is too large
    Junit单元测试不支持多线程
    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    一个项目中:只能存在一个 WebMvcConfigurationSupport (添加swagger坑)
    Nginx 转发特点URL到指定服务
    基于UDP协议的程序设计
    TcpClient类与TcpListener类
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5302255.html
Copyright © 2011-2022 走看看