3 solutions

  • 2
    @ 2024-7-19 11:19:13
    #include<bits/stdc++.h>
    using namespace std;
    const int N=25;
    int w[N],ans=-1,n,m;
    void dfs(int u,int s)
    {
    	if(u==n+1)
    	{
    		if(s<=m)ans=max(ans,s);
    		return;
    	}
    	dfs(u+1,s);
    	dfs(u+1,s+w[u]);	
    }
    int main()
    {
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)scanf("%d",&w[i]);
    	dfs(1,0);
    	printf("%d",ans);
    	return 0;
    }
    
    • 0
      @ 2025-1-11 15:09:36
      #include<bits/stdc++.h>
      using namespace std;
      const int N=15;
      int n,m;
      int w[N];
      int ans=1;
      void dfs(int u,int s)
      {
      	if(u==n)
      	{
      		if(s<m)
      		{
      			s=min(s,ans);
      		}
      		return s;
      	}
      	dfs(u,s);
      	dfs(u+1,s+w[i]);
      }
      int main()
      {
      	cin>>m>>n;
      	for(int i=0;i<n;i++)
      	{
      		cin>>w[i];
      	}
      	cout<<dfs();
          return 0;
      }
      
      
      • -2
        @ 2024-7-9 10:16:50

        好吧,我再来一次。

        #include<bits/stdc++.h>
        using namespace std;
        const int N=25;
        int w[N],ans=-1,n,m;
        void dfs(int u,int s)
        {
        	if(u==n+1)
        	{
        		if(s<=m)ans=max(ans,s);
        		return                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    																																																																																																																																																																																																																																																																																																																																																																					;
        	}
        	dfs(u+1,s);
        	dfs(u+1,s+w[u]);	
        }
        int main()
        {
        	cin>>n>>m;
        	for(int i=1;i<=n;i++)scanf("%d",&w[i]);
        	dfs(1,0);
        	printf("%d",ans);
        	return 0;
        }
        
        • 1

        Information

        ID
        229
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        3
        Tags
        # Submissions
        35
        Accepted
        11
        Uploaded By