最近在学dp,,忽见一道砝码称重,,
实在想不出和dp有个几毛钱的关系,,
于是乎我就枚举了。。
木有测试数据=。=(求神犇给链接)
所以就上代码了。。
#include <iostream> #include <cstdio> #include <cstdlib> #define MAX 1010 using namespace std; int num[7],value[7],ans; bool opt[MAX]; void begin(),end(); int find(int ma,int k[]) { opt[ma] = true; for (int i = 1; i <= 6; i++) { if ( k[i] > 0 ) { k[i]--; int s = ma - value[i]; find(s,k); k[i]++; } } return 0; } void work() { value[1] = 1; value[2] = 2; value[3] = 3; value[4] = 5; value[5] = 10; value[6] = 20; int sum = 0; for (int i = 1; i <= 6; i++) { cin>>num[i]; sum += num[i] * value[i]; } find(sum,num); for (int i = 1; i <= 1000; i++) { if ( opt[i] == true ) { ans++; } } cout<<ans; } int main() { // begin(); work(); // end(); return 0; } void begin() { freopen("input.in","r",stdin); freopen("output.out","w",stdout); } void end() { fclose(stdin); fclose(stdout); }