以前遇到dp,直接看题解然后再花一下午看懂(虽然还是似懂非懂)
今天遇到dp,依旧是直接看状态转移方程..但好歹自己能写出来了...
1 /* 2 3 ID: hubiao cave 4 5 PROG: stamps 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include<iostream> 15 16 #include<fstream> 17 18 #include<string> 19 #include<algorithm> 20 21 using namespace std; 22 23 24 25 int K,N; 26 int mins[200*10000+1]; 27 int stamp[52]; 28 int main() 29 30 { 31 32 ifstream fin("stamps.in"); 33 34 ofstream fout("stamps.out"); 35 int result; 36 fin>>K>>N; 37 for(int i=0;i<N;i++) 38 fin>>stamp[i]; 39 sort(stamp,stamp+N); 40 41 mins[0]=0; 42 for(int i=1;;i++) 43 { 44 45 for(int j=0;j<=N;j++) 46 { 47 if(i==1) 48 mins[1]=1; 49 else 50 { 51 if(i>=stamp[j]) 52 { 53 if(mins[i]==0) 54 mins[i]=mins[i-stamp[j]]+1; 55 else 56 mins[i]=min(mins[i-stamp[j]]+1,mins[i]); 57 } 58 } 59 } 60 if(mins[i]==0||mins[i]>K) 61 { 62 result=i-1; 63 break; 64 } 65 66 67 } 68 69 fout<<result<<endl; 70 71 72 return 0; 73 74 }