首先考慮沒有限制的情況 當硬幣被限制數量,需要加入對硬幣情況的考慮 所以設dp[][] 記錄湊齊x的種類 代碼如下 #include <iostream>using namespace std;int main(){ int dp[251][101]={0},ans[251]={0}; int ty ...
首先考慮沒有限制的情況
當硬幣被限制數量,需要加入對硬幣情況的考慮
所以設dp[][]
記錄湊齊x的種類
代碼如下
#include <iostream>
using namespace std;
int main(){
int dp[251][101]={0},ans[251]={0};
int type[5]={1,5,10,25,50},x,i,j,k;
dp[0][0]=1;
for(i=0;i<5;i++)
for(j=1;j<101;j++)
for(k=type[i];k<251;k++)
dp[k][j]+=dp[k-type[i]][j-1];
for(i=0;i<251;i++)
for(j=0;j<101;j++)
ans[i]+=dp[i][j];
while(cin >> x){
cout << ans[x] << endl;
}
return 0;
}
咳咳,沒了