为什么是79分
  • 板块P1120 小木棍
  • 楼主Robert08
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/29 21:20
  • 上次更新2023/10/27 09:30:42
查看原帖
为什么是79分
286116
Robert08楼主2022/9/29 21:20

大佬帮我看看

#include<bits/stdc++.h>
using namespace std;
int stick[67],sum,vis[67],n;
bool cmp(int x,int y){
	return x>y;
}
bool dfs(int id,int len,int tar){
	if(stick[id]>tar){
		return false;
	} 
	int taj=tar-stick[id],mark=0;
	if(taj==0)	return true;
	for(int i=id+1;i<=n;i++){
		if(stick[i]<=taj&&(vis[i]==0&&stick[i]!=mark)){	
			vis[i]=1;
			if(dfs(i,len,taj)){
				return true;
			}
			vis[i]=0;
			mark=stick[i];
		}
	}
	return false;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&stick[i]);
		sum+=stick[i];
	}	
	sort(stick+1,stick+n+1,cmp);
	for(int i=stick[1];i<=sum;i++){
		if(sum%i!=0)	continue;
		for(int j=1;j<=n;j++)	vis[j]=0;
		int flag=1;
		for(int j=1;j<=n;j++){
			if(vis[j]==1){
				continue;
			}	
			if(!dfs(j,i,i)){
				flag=0;
				break;
			}
		}
		if(flag==0)	continue;
		printf("%d",i);
		break;
	}
	return 0;
} 
2022/9/29 21:20
加载中...