4 solutions

  • 3
    @ 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;
    }
    
    • 1
      @ 2025-7-24 10:21: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
        @ 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;
        }
        
        
        • -3
          @ 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
          55
          Accepted
          18
          Uploaded By