#30 TLE求调
查看原帖
#30 TLE求调
1228017
xiaomiao_001楼主2024/11/24 11:44

求求QWQ

#include <iomanip>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int N=80;
int a[N];
bool f[N];
int n,len,slen;
bool dfs(int cnt,int sum,int idx){
    if(cnt*len==slen){
    	return true;
	} 
    if(sum==len){
    	return dfs(cnt+1,0,1);
	}  
    int fail=0;
    for(int i=idx;i<=n;i++)
	{
	    if(f[i]||sum+a[i]>len||a[i]==fail){
	    	continue;
		} 
	    f[i]=true;
	    if(dfs(cnt,sum+a[i],i+1)){
	    	return true; 
		}     
	    f[i]=false;  
	    fail=a[i];
	    if(sum==0||sum+a[i]==len) return false;
    } 
    return false; 
} 

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
    	slen+=a[i];
    }
    sort(a+1,a+n+1);
    reverse(a+1,a+n+1);
     for(len=a[1];len<=slen;len++){
         if(slen%len==0 &&dfs(0,0,1)){
         	cout<<len;
     		break;         
     	}
     }
    
    return 0;
}


 
2024/11/24 11:44
加载中...