最后一个点好恶心
  • 板块P1120 小木棍
  • 楼主2024TZY
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/3/31 11:51
  • 上次更新2024/3/31 14:15:53
查看原帖
最后一个点好恶心
1278855
2024TZY楼主2024/3/31 11:51

根本找不到问题(qwq)

哪位大佬能帮我调一下
#include<bits/stdc++.h>
using namespace std;
const int N=66;
int n,a[N];
int len,cnt;
bool used[N],flag;
void dfs(int j,int l,int last)
{
	if(j>cnt)
	{
		if(l==0)flag=true;
		return ;
	}
	if(flag)return;
	if(l==len)dfs(j+1,0,1);
	int fail=0;
	for(int i=last;i<=n;i++)
		if(used[i]==false&&l+a[i]<=len&&a[i]!=fail)
		{
			used[i]=true;
			dfs(j,l+a[i],i+1);
			
			used[i]=false;
			if(flag==false)
			{
				fail=a[i];
				if(l==0||a[i]+l==len)return;
			}
			else return;
		}
}
int main()
{
	cin>>n;
	int big=0,sum=0;
	for(int i=1;i<=n;i++)cin>>a[i],big=max(a[i],big),sum+=a[i];
	sort(a+1,a+n+1);
	reverse(a+1,a+n+1);
	for(len=big;len<=sum;len++)
	{
		if(sum%len==0)
		{
			cnt=sum/len;
			dfs(1,0,1);
			if(flag)
			{
				cout<<len;
				break;
			}
		}
	}
	return 0;
}
2024/3/31 11:51
加载中...