兌換錢幣問題

問題如下:

給你價值爲n的錢幣,現在讓你兌換成1分,2分,3分的錢幣,問有多少種兌換方法;

這種問題大家第一想到的一定是暴力求解,但還有一種溫和的方法。。

具體問題具體分析,假如確定了3分錢幣的個數,哪家只剩下2分的和1分的如何組合,每個2分的錢幣可以轉化爲2個1分的錢幣,2分錢幣有幾個,組合就有幾個。

比如說有20分錢,有一個3分的。

剩下17分,

17 / 2=8;

2  2  2  2  2   2  2  2 1

2  2  2  2  2   2  2  1  1  1

2  2  2  2  2   2  1 1 1  1  1

以此類推,你每抖開一個2就是一種組合,所以。。。


代碼如下:


#include<stdio.h>
int main()
{
    int N;
    while(~scanf("%d",&N))
    {
        int i,j,k,l=0;
        for(i=0; i<=N/3; i++)
        {
            k=(N-i*3)/2;
            l+=k+1;
        }
        printf("%d\n",l);
    }
    return 0;
}

發佈了39 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章