45~52行循环多次输出求调
查看原帖
45~52行循环多次输出求调
1078219
AETCH楼主2023/12/17 18:48
#include<bits/stdc++.h>
using namespace std;
int len,L,R,n,cnt,car[100],a[100];
bool f(int step,int k){
	if(k>cnt)return 0;
	if(step>n){
		if(cnt==k){
			for(int i=1;i<=k;i++){
				if(car[i]!=len){
					return 0;
				}
			}
			return 1;
		}
		return 0;
	}
	for(int i=1;i<=k;i++){
		if(car[i]+a[step]<=len){
			car[i]+=a[step];
			if(f(step+1,k)==1)return 1;
			car[i]-=a[step];
		}
	}
	car[k+1]=a[step];
	if(f(step+1,k+1)==1)return 1;
	car[k+1]=0; 
	return 0; 
}
bool cmp(int x,int y){
	return x>y;
}
int main(){
	while(cin>>n){
		memset(a,0,sizeof a);
		memset(car,0,sizeof car);
		len=L=R=cnt=0;
		if(n==0)return 0;
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i]);
			L=max(L,a[i]);
			R=R+a[i];
		}
		sort(a+1,a+n+1,cmp);
		for(len=L;len<=R/2;len++){
			if(R%len==0){
				cnt=R/len;
			if(f(1,0)==1){
					printf("%d",len);
				}
			}
		}
		printf("%d",R);
	}
}
2023/12/17 18:48
加载中...