您的位置:首页 > 其它

USACO 2.3 Money Systems (DP 动态规划 + 空间优化)

2015-10-03 11:51 435 查看
#include <stdio.h>
#define DEBUG 1
#define TESTCASES 9

//ways[constructedMoney]表示凑成constructedMoney的数量的钱时的方案数
long long ways[10001];

int main(){
#if DEBUG
int testCase;
for (testCase = 1; testCase <= TESTCASES; testCase++){
char inputFileName[20] = "inputX.txt";
inputFileName[5] = '1' +  (testCase - 1);
freopen(inputFileName, "r", stdin);
printf("\n#%d\n", testCase);
#endif

int typesOfCoins, moneyToConstruct;
scanf("%d%d", &typesOfCoins, &moneyToConstruct);

int constructedMoney;
for (constructedMoney = 1; constructedMoney <= moneyToConstruct; constructedMoney++)
ways[constructedMoney] = 0;
ways[0] = 1;

int type;
for (type = 1; type <= typesOfCoins; type++){
int coinsValue;
scanf("%d", &coinsValue);
for (constructedMoney = coinsValue; constructedMoney <= moneyToConstruct; constructedMoney++)
ways[constructedMoney] += ways[constructedMoney - coinsValue];
}

printf("%lld\n", ways[moneyToConstruct]);

#if DEBUG
}
#endif
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息