1 条题解

  • 0
    @ 2025-10-10 15:48:05

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int num[50];//存放所有的数 
    bool f[50];//标记每个数是否被加到总和上了 
    int n; 
    int maxsum=-1;//最大的和 
    
    //k为当前下标,sum为总和
    void fun(int k,int sum)
    {	
       if (k>=n)//如果下标大于数组下标 
       {
       	   if(sum > maxsum) maxsum = sum; 
           return;
       }
       
       if(k != 0 && f[k-1] == false){
       	  f[k] = true;
       	  fun(k+1,sum+num[k]);
       }else{
       	  fun(k+1,sum);
       }
       
       f[k] = false;
       fun(k+1,sum);
    }
    int main()
    {
        cin>>n;
        for(int i = 0;i < n;i++){
        	cin>>num[i];
    	} 
        fun(0,0);
        cout<<maxsum;
        return 0;
    }
    
    
    • 1

    信息

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