只有86分,求助大佬
查看原帖
只有86分,求助大佬
111901
过载30G楼主2020/10/8 17:09

只有86分呀

为什么呢?

#include<bits/stdc++.h>
using namespace std;
int s1,S=1,B=0,ans=INT_MAX,stop;
int a[11],b[11];
//int data[11];
bool flag[11];
void dfs(int x,int dep)
{
	if(dep>stop)
	{
		if(ans>abs(S-B))ans=abs(S-B);
//		cout<<ans<<' '<<dep<<' '<<abs(S-B)<<' '<<S<<' '<<B<<endl;
		return;
	}
//	if(flag[x]==true)return;
	flag[x]=true;
	S*=a[x];
	B+=b[x];
	for(int i=1;i<=s1;i++)
	if(flag[i]!=true)dfs(i,dep+1);
	flag[x]=false;
	S/=a[x];
	B-=b[x];
	return;
}
int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	memset(flag,false,sizeof(flag));
	cin>>s1;
	for(int i=1;i<=s1;i++)
	cin>>a[i]>>b[i];
	for(int i=1;i<=s1;i++)
	{
		stop=i;
		for(int i1=1;i1<=s1;i1++)
		{
//			data[1]=
			dfs(i1,1);
		}
	}
	cout<<ans<<endl;
	return 0;
}

尝试了无数遍呀QAQ

2020/10/8 17:09
加载中...