1 条题解

  • 0
    @ 2024-12-24 9:54:31

    C++ :

    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <cstdio>
    using namespace std;
    #define maxn 1010
    int dp[2][maxn];
    int now;
    int main(){
        int T;
        scanf("%d",&T);
        while(T--){
            int n,m,x;
            scanf("%d%d%d",&n,&m,&x);
          	now=0;
          	memset(dp[0],0,sizeof dp[0]);
            dp[0][x]=1;
            for(int i=0;i<m;i++){
                scanf("%d",&x);
              	now^=1;memset(dp[now],0,sizeof dp[now]);
              	for(int j=0;j<n;j++){
                	if(dp[now^1][j]){
           				if(j+x<n) dp[now][j+x]=1;
                      	if(j-x>=0) dp[now][j-x]=1;
                    }
                }
            }
          	int ans=-1;
          	for(int i=n-1;i>=0;i--){
            	if(dp[now][i]){
                	ans=i;break;
                }
            }
            printf("%d\n",ans);
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    1200
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者