1. 程式人生 > >硬幣找零(動態規劃)

硬幣找零(動態規劃)

#include "stdlib.h"
#define N  63
 void GetChange(int n,int j,int m[],int c[][N] )
  {

/*下標從1開始*/   

int Max=10000;
   int k,i,t;

 int b[5]={0}; /*最好作為一個引數*/

   for( i=1;i<=n;i++)
    c[i][0]=0;
   for(i=1;i<=j;i++)
   {
    if(i>=m[1])
    {
     c[1][i]=(i%m[1]==0)?i/m[1]:Max;
    }
    else
     c[1][i]=Max;

   }
    for( i=2;i<=n;i++)
   {

    for(k=1;k<=j;k++)
    {
      if(k>=m[i])
     {
       c[i][k]=min (c[i][k-m[i]]+1,c[i-1][k]);
       c[i][k]=min (c[i][k],Max);
     }
     else
     {
      c[i][k]=c[i-1][k];
     }
    }
   }

    k=j;
    t=n;
   if(c[t][k]<Max )
   {
    while(k>0)
    {
     if(c[t][k]==c[t-1][k]) t--;
     else
     {

               b[t]++;

      k-=m[t];
     }
    }

 for(k=1;k<=n;k++)

{

            printf("%d:%d ",m[k],b[k]);

}
    printf("/n");

   }
  }

 void main()
 {
  int m[]={0,2,3,5,8}  ;
  int n=5,j=13,c[6][N];
  int i;
  for(i=13;i<40;i++)
  GetChange(n,i,m,c);
 }

相關推薦

硬幣動態規劃

#include "stdlib.h"#define N  63 void GetChange(int n,int j,int m[],int c[][N] )  { /*下標從1開始*/    int Max=10000;   int k,i,t;  int b[5]={0

最少硬幣問題-動態規劃

動態規劃把問題分為子為題,解決了這些子問題,再把子問題合併起來,便可以得到問題的解。在解決子問題過程中,需要把子問題的解儲存起來方便後面使用。 最少硬幣找零問題為:給予不同面值的硬幣若干種種(每種硬幣個數無限多),用若干種硬幣組合為某種面額的錢,使硬幣的的個數最少。

硬幣問題動態規劃

硬幣找零(動態規劃) 問題介紹 給定指定的硬幣種類,面值為 1, 3, 5(在此具體化些),給定所找零的錢數 sum,給出最少的硬幣找零數,每個種類的硬幣無限使用。 問題分析 看到這問題,當時我想到用貪心演算法來求解,最後求解方案因為巧合對了,後來在網上看到動態

java出陣列中和為K的一組解動態規劃

考慮N個數的陣列A中是否存在和為K的解,可以分為考慮(N-1個數中是否有和為K的解)或者(N-1個數中是否有和為K-A[N-1]的解(解包含A[N-1]的情況))。也就是說,動態規劃方程是:P[N][K]=P[N-1][K]||P[N-1][K-A[N-1]];直接上程式碼:

投擲硬幣動態規劃

#1506 : 投擲硬幣 時間限制:10000ms 單點時限:1000ms 記憶體限制:256MB 描述 小Hi有一枚神奇的硬幣。已知第i次投擲這枚硬幣時,正面向上的概率是P

hud2059龜兔賽跑動態規劃

n+1 動物 include output script text sam 起跑線 other 龜兔賽跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T

ship動態規劃

動態規劃 輸出 一個 子序列 升序 端點 如果 2個 長度 (ships.pas/c/cpp) 來源:《奧賽經典》(提高篇)【問題描述】PALMIA國家被一條河流分成南北兩岸, 南北兩岸上各有N個村莊。 北岸的每一個村莊有一個唯一的朋友在南岸,且他們的朋友村莊彼此不同。每一

計蒜客--爬樓梯 動態規劃

tle nbsp vector main long 3.1 false n) 方法 假設你現在正在爬樓梯,樓梯有 nn 級。每次你只能爬 11 級或者 22 級,那麽你有多少種方法爬到樓梯的頂部? 輸入格式 第一行輸入一個整數 n(1\leq n \leq 50)n

【算法學習】雙調歐幾裏得旅行商問題動態規劃(轉)

png .com 16px 我們 pan 子結構 最小 而且 復雜度 雙調歐幾裏得旅行商問題是一個經典動態規劃問題。《算法導論(第二版)》思考題15-1和北京大學OJ2677都出現了這個題目。 旅行商問題描述:平面上n個點,確定一條連接各點的最短閉合旅程。這個解的一般形式

動態規劃4977:怪盜基德的滑翔翼

受傷 問題 while 超級 ret 輸入數據 col std namespace 描述 怪盜基德是一個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。 有一天

動態規劃4978:寵物小精靈之收服

能夠 出了 哪些 整數 範圍 -- power 必須 方程 描述 寵物小精靈是一部講述小智和他的搭檔皮卡丘一起冒險的故事。 一天,小智和皮卡丘來到了小精靈狩獵場,裏面有很多珍貴的野生寵物小精靈。小智也想收服其中的一些小精靈。然而,野生的小精靈並不那麽容易被收服。對於每一個野

動態規劃6049:買書

動態 種類 blog namespace iostream sin += out bsp 描述 小明手裏有n元錢全部用來買書,書的價格為10元,20元,50元,100元。 問小明有多少種買書方案?(每種書可購買多本) 輸入 一個整數 n,代表總共錢數。(0 <=

decode-ways動態規劃

mine nta sage 方法 表示 subst nco ssa 嘗試 題目描述   A message containing letters fromA-Zis being encoded to numbers using the following map

Triangle動態規劃

ret from 新的 選擇 位置 ive 一個 top 原理 題目描述 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent

【WC2001】【cogs358】高性能計算機動態規劃

結束 輸入輸出 計算機 stdout 所有 主存 時間 span 要花 【WC2001】【cogs358】高性能計算機(動態規劃) ##題面 【問題描述】 現在有一項時間緊迫的工程計算任務要交給你——國家高性能並行計算機的主管工程師——來完成。為了盡可能充分發揮並行計算機的

【BZOJ1899】午餐動態規劃

需要 記錄 表示 列隊 其中 truct ble read namespace 【BZOJ1899】午餐(動態規劃) 題面 BZOJ 題解 我太弱了 這種\(dp\)完全做不動。。 首先,感性理解一些 如果所有人都要早點走, 那麽,吃飯時間長的就先吃 吃飯時間短的就晚點吃

【BZOJ2998】Problem A動態規劃

gpo pre com space main ostream 最大 == while 【BZOJ2998】Problem A(動態規劃) 題面 BZOJ 題解 一個人的成績範圍可以確定為一個區間 這樣就變成了 選擇若幹區間,不重合, 每個區間有個權值,求最大權值和 這樣就可

ALGO-3 K好數動態規劃

con 正整數 const 方程 自然 自然數 include 由於 can 問題描述 如果一個自然數N的K進制表示中任意的相鄰的兩位都不是相鄰的數字,那麽我們就說這個數是K好數。求L位K進制數中K好數的數目。例如K = 4,L = 2的時候,所有K好數為11、13、20

ALGO-17 乘積最大動態規劃

最大乘積 插入 ont return 沒有 主持人 temp 國際 規劃 問題描述   今年是國際數學聯盟確定的“2000——世界數學年”,又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的一個好朋友XZ也有

【題解】 bzoj4033: [HAOI2015]樹上染色* 動態規劃

規劃 math online 4.2 pro php 白色 AD truct bzoj4033,懶得復制,戳我戳我 Solution: 定義狀態\(dp[i][j]\)表示\(i\)號節點為根節點的子樹裏面有\(j\)個黑色節點時最大的貢獻值 然後我們要知道的就是子節點到