Title Link: http://www.lightoj.com/volume_showproblem.php?problem=1231
Test instructions: There are several solutions to multiple parts.
Code:
#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h>#include <complex>#include <string>#include <functional>#include <iterator>#include <algorithm>#include <vector>#include <stack>#include <queue>#include <set>#include <map>#include <list>#include <bitset>#include <sstream>#include <iomanip>#include <fstream>#include <iostream>#include <ctime>#include <cmath>#include <cstring>#include <cstdio>#include <time.h>#include <ctype.h>#include <string.h>#include <assert.h>using namespace STD;intN, K;intval[ the],num[ the];intdp[ the][1100];intMain () {intTscanf("%d", &t); for(intCA =1; CA <= T; ca++) {scanf("%d%d", &n,&k); for(inti =0; I < n; i++)scanf("%d", &val[i]); for(inti =0; I < n; i++)scanf("%d", &num[i]);memset(DP,0,sizeof(DP)); dp[0][0] =1; for(inti =0; I < n; i++) for(intj =0; J <= K; J + +) for(intp =0; P <= Num[i] && P*val[i] <= J; p++) Dp[i +1][J] = (Dp[i +1][J] + dp[i][j-p*val[i])%100000007;printf("Case%d:%d\n", Ca,dp[n][k]); }return 0;}
Lightoj 1231-coin Change (I) "DP"