30分求调玄关
查看原帖
30分求调玄关
1170111
MCxiaokang楼主2024/10/24 21:49

WA on #1 #2 #3 #4

#include<bits/stdc++.h>
using namespace std;

const int maxn=10+2;
int n;
int ans=2e9+1;
struct aaa
{
    int s,b;
    bool isused;
}a[maxn];

int check()
{
    bool iscom=false;
    int stot=1,btot=0;
    for (int i=1;i<=n;i++)
    {
        if (a[i].isused)
        {
            stot*=a[i].s;
            btot+=a[i].b;
            iscom=true;
        }
    }
    if (iscom) return abs(stot-btot);
    else return -1;
}

void dfs(int k)
{
    if (k>n)
    {
        if (check()!=-1) ans=min(check(),ans);
        return;
    }
    a[k+1].isused=true;
    dfs(k+1);
    a[k+1].isused=false;
    dfs(k+1);
}

int main()
{
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i].s>>a[i].b;
        a[i].isused=false;
    }
    dfs(1);
    cout<<ans<<"\n";
    return 0;
}
2024/10/24 21:49
加载中...