P1120小木棍想不明白
  • 板块P1120 小木棍
  • 楼主xiaoql
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/4/14 11:33
  • 上次更新2023/10/23 18:32:56
查看原帖
P1120小木棍想不明白
114671
xiaoql楼主2023/4/14 11:33

不知道哪里错了样例都过不了,各种解法都看了,感觉都大同小异,求大佬帮忙看下,忽略50以上的的问题还没加,关键现在样例过不去

#include <bits/stdc++.h>
using namespace std;
const int N=100;
int n,cnt,a[N],v[N],sum,len,val;
bool dfs(int stick,int cab,int last){
	if(stick*len==sum){
		return 1;
	}
	if(cab==len)dfs(stick+1,0,1);
	for(int i=last;i<=n;i++){
		if(!v[i]&&cab+a[i]<=len){
			v[i]=1;
			if(dfs(stick,cab+a[i],i+1))return 1;
			v[i]=0;
		}
		if(cab==0||cab+a[i]==len)return 0;
		int j=i;
		while(j<=n&&a[j]==a[i])j++;
		i=j-1;	
	}
	return 0;
	
}
int main(){
	while(cin>>n&&n){
		sum=0;	
		memset(v,0,sizeof v);
		for(int i=1;i<=n;i++){
			cin>>a[i];
			sum+=a[i];
			val=max(a[i],val);
		}
		sort(a+1,a+n+1);
		reverse(a+1,a+n+1);
		for(len=val;len<=sum;len++){
			if(sum%len)continue;
			if(dfs(1,0,1)){
				cout<<len;
				return 0;
			}
		}
	
	}
	return 0;
} 
2023/4/14 11:33
加载中...