只有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