[bzoj2748]音量调节

f[i][j]:1~i物品中是否可以达到j

f[i][j]=f[i-1][j+a[i]]||f[i-1][j-a[i]]  (如果合法)

 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 #include <string>
 7 #include 
 8 #include 
 9 #include 
10 #include 
11 #include 
12 using namespace std;
13 
14 int n,a[1100],beg,en;
15 bool f[60][1100];
16 int main(){
17     scanf("%d%d%d",&n,&beg,&en);
18     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
19     f[0][beg]=1;
20     for(int i=1;i<=n;i++)
21         for(int j=0;j<=en;j++)
22         {
23             if(j-a[i]>=0&&f[i-1][j-a[i]])f[i][j]=1;
24             if(j+a[i]<=en&&f[i-1][j+a[i]])f[i][j]=1;
25         }
26     for(int i=en;i>=0;i--)if(f[n][i]){printf("%d\n",i);return 0;}
27     printf("-1\n");
28 }
View Code

 

转载于:https://www.cnblogs.com/KingSann/articles/6241217.html

你可能感兴趣的:([bzoj2748]音量调节)