4 条题解

  • 2
    @ 2024-11-25 20:52:35

    dfs深搜代码

    #include <bits/stdc++.h>
    #define LL long long
    using namespace std;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    int n , k;
    bool flag , v [N];
    int a [N]; 
    void dfs (int last , int sum)
    {
    	if (sum == 0)
    	{
    		cout << "Yes";
    		flag = 1;
    		exit (0);
    		return;
    	}
    	if (a [last] > sum) return;
    	for (int i = last; i <= n; i++)
    	{
    		dfs (i + 1 , sum - a [i]);
    	} 
    }
    int main()
    {
    	    cin >> n >> k;
    	    for (int i = 1; i <= n; i++)
    	        cin >> a [i];
    	    sort (a + 1 , a + n + 1);
    	    dfs (1 , k);
    	    if (! flag) cout << "No";
    		return 0;
    }
    
    • 1
      #include<bits/stdc++.h>
      using namespace std;
      int k , a[10005] , n, flag;
      bool v[10005];
      void dfs(int sum , int last){
      	if(sum == 0)
      	{
      		flag = 1;
      		return;
      	}
      	for(int i = last + 1;i <= n;i++)
      	    dfs(sum - a[i],i);
      }
      int main(){
      	cin >> n >> k;
      	for(int i = 1;i <= n;i++)
      	    cin >> a[i];
      	dfs(k , 0);
      	if(flag){
      		cout <<	"Yes";
      	}
      	else
      	{
      		cout << "No";
      	}
      	return 0;
      }
      
      • 1
        @ 2024-12-1 18:31:22
        using namespace std;
        int n,k;
        bool flag;
        int a[10005];
        bool v[10005];
        void dfs(int sum,int last)
        {
        	if(sum==0){
        		flag=1;
        		return ;
        	}
        	for(int i=last+1;i<=n;i++)
        	{
        		dfs(sum-a[i],i);
        	}
        	
        }
        int main(){
        	cin>>n>>k;
        	for(int i=1;i<=n;i++){
        		cin>>a[i];
        	}
        	dfs(k,0);
        	if(flag){
        		cout<<"Yes";
        		
        	}
        	else{
        		cout<<"No";
        	}
        	return 0;
        }
        
        • 0
          #include <iostream>
          #include <cstdio>
          #include <cmath>
          #include <algorithm>
          #include <stack>
          #include <queue>
          #include <map>
          #include <cstring>
          #include <iomanip>
          const int N = 1e8+10;
          const int INF = 0x3f3f3f3f;
          using namespace std;
          int n,k,a[N]; 
          bool flag=0;
          int main()
          {
          	cin>>n>>k;
          	for(int i=0;i<n;i++)
          	{
          		cin>>a[i];
          	}
          	for(int i=0;i<=(1<<n);i++)
          	{
          		int sum=0;
          		for(int j=0;j<n;j++)
          		{
          			if(i>>j&1)
          		    {
          			    sum+=a[j];
          		    }
          		}
          		if(sum==k)
          		{
          			cout<<"Yes"<<endl;
          			flag=1;
          			break;
          		}
          	}
          	if(flag==0)
          	{
          		cout<<"No";
          	}
          	return 0;
          }
          
          • 1

          信息

          ID
          2551
          时间
          1000ms
          内存
          256MiB
          难度
          8
          标签
          递交数
          433
          已通过
          74
          上传者