#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
int a[] = {1,2,4,10,20,40,100,200,400,1000,2000};
long long dp[30000 + 5];
int main(){
dp[0] = 1;
for(int i = 0; i < 11; i++)
for(int j = 1; j*5 <= 30000; j++)
if((j-a[i])>=0)
dp[j] += dp[(j-a[i])];
double temp;
while(scanf("%lf",&temp)){
if(temp == 0.00)
return 0;
double t = temp*20;
int x = t;
printf("%6.2lf%17.lld\n",temp,dp[x]);
}
return 0;
}普通的完全背包,关键在输入输出。uva 不!能!用 I64d !!!!!!!!!!!!
本文介绍了一个典型的完全背包问题的解决方法,并通过一个具体的C++实现案例进行讲解。特别注意的是,在UVA在线评测系统中,对于输入输出格式的要求非常严格,不能使用某些特定的数据类型。
1447

被折叠的 条评论
为什么被折叠?



