Stamps USACO 3.1

以前遇到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 }

 

posted @ 2013-09-27 23:00  cavehubiao  阅读(167)  评论(0编辑  收藏  举报