求教谢谢各位orz
#include<bits/stdc++.h>
using namespace std;
struct food
{
long long s;
long long b;
}q[15];
int n,total_s=1,total_b=0;
long long minabs;
const long long Min = 1e9+5;
bool vis[20];
void dfs(int,int,long long);
int main()
{
cin>>n;
minabs=Min;
memset(vis,false,sizeof(vis));
for(int i=1;i<=n;i++)
cin>>q[i].s>>q[i].b;
dfs(0,1,minabs);
cout<<minabs<<endl;
return 0;
}
void dfs(int u,int index,long long nowabs)
{
minabs=min(minabs,nowabs);
if(u==index)
return;
for(index=1;index<=n;index++)
{
for(int i=1;i<=index;i++)
{
if(!vis[i])
{
total_s*=q[i].s;
total_b+=q[i].b;
nowabs=abs(total_s-total_b);
vis[i]=true;
dfs(u+1,index,nowabs);
total_s/=q[i].s;
total_b-=q[i].b;
vis[i]=false;
}
}
}
}