40分求助
查看原帖
40分求助
727237
As_Nerve楼主2022/9/3 20:43
#include<bits/stdc++.h>
using namespace std;
const int N=60;
int n,began,maxlevel;
int f[N][N],a[N];
int main(){
	scanf("%d %d %d",&n,&began,&maxlevel);
    f[0][began]=1;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        for(int j=maxlevel;j>=0;j--){
            if(j-a[i]>=0) f[i][j]=f[i][j]||f[i-1][j-a[i]];
            if(j+a[i]<=maxlevel) f[i][j]=f[i][j]||f[i-1][j+a[i]];
        }
    for(int i=maxlevel;i>=1;i--)
        if(f[n][i]==1){
            printf("%d\n",i);
            return 0;
        }
    printf("%d\n",-1);
	return 0;
}
2022/9/3 20:43
加载中...