zoukankan      html  css  js  c++  java
  • 动态规划------硬币问题

     1 //dp[i]=dp[i-vj]+1
     2 #include<stdio.h>
     3 int main()
     4 {
     5     int dp[20];
     6     int money;
     7     int useMoney[20];//这次找零,在原来的基础上需要的硬币 
     8     int value[]={0,2,4,5};
     9     int i,j;
    10     while(~scanf("%d",&money))
    11   {
    12     for(i=0;i<12;i++)
    13     {
    14         dp[i]=99999;
    15     }
    16     dp[0]=0;
    17     for(i=0;i<12;i++)
    18     {
    19         for(j=1;j<4;j++)//注意从1开始
    20         {
    21 
    22             if(value[j]<=i&&(dp[i-value[j]]+1<dp[i]))
    23             {
    24                 dp[i]=dp[i-value[j]]+1;
    25                 useMoney[i]=value[j];//
    26             }
    27         }
    28         
    29     }
    30     if(useMoney[money]==0)
    31     {
    32         printf("找不开!
    ");//找不开的问题未解决
    33     }
    34     printf("%d
    ",dp[money]);//需要多少硬币
    35     while(money>0)  //需要的硬币分别是多少
    36     {  
    37         printf("%d,",useMoney[money]);
    38         money-=useMoney[money];  
    39     }  
    40     /*for(k=0;k<=dp[money];k++)
    41     {
    42         printf("%d ",useMoney[k]);
    43     }*/
    44 }
    45     return 0;
    46 }
  • 相关阅读:
    网页抓取
    基本数据结构
    小节
    顺序统计量
    线性时间排序
    快速排序
    堆排序 Heapsort
    大数运算
    趣味题,文本中洞的数量
    nginx config配置
  • 原文地址:https://www.cnblogs.com/curo0119/p/8327973.html
Copyright © 2011-2022 走看看