問題如下:
給你價值爲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;
}