1 条题解

  • 0
    @ 2023-6-11 12:20:41

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int s,n,w[51],f[51];
    bool flag;
    void dfs(int i,int step){
    	f[step] = w[i];
    	int sum = 0;
    	for(int k=1;k<=step;k++){
    		sum = sum + f[k];
    	}
    	if(sum==s){
    		flag = 1;
    		return;
    	}
    	for(int k=i+1;k<=n;k++){
    		if(flag==0 && sum<s) dfs(k,step+1);
     	}
    }
    int main(){
    	cin>>s>>n;
    	for(int i=1;i<=n;i++){
    		cin>>w[i];
    	}
    	for(int i=1;i<=n;i++){
    		memset(f,0,sizeof(f));
    		dfs(i,1); 
    		if(flag==1) break;
    	}
    	if(flag==1) cout<<"YES";
    	else cout<<"NO";
    	return 0;
    }
    
    
    • 1

    信息

    ID
    2563
    时间
    1000ms
    内存
    16MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者