求助
查看原帖
求助
206423
焚魂楼主2020/9/3 18:02

30分

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;

int n,ans=1000000010;
struct node{
	int x,y;
}a[20];
node t;
int b[20];

void dfs(int y,int z)
{
	if(y>n)
	return;
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			b[i]=1;
            if(abs(t.x*a[i].x-t.y-a[i].y)<abs(t.x-t.y))
			{
				t.x*=a[i].x;
				t.y+=a[i].y;
			}
			ans=min(ans,abs(t.x-t.y));
			dfs(y+1,i);
			b[i]=0;
		}
		else
		continue;
    }
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i].x>>a[i].y;
	
    t.x=a[1].x;
    t.y=a[1].y;
	dfs(1,1);
	cout<<ans;
	
	return 0;
}
2020/9/3 18:02
加载中...