求助,是不是特例0/1判断出了问题?
查看原帖
求助,是不是特例0/1判断出了问题?
500888
sodiums楼主2021/4/18 01:01
#include <bits/stdc++.h>
using namespace std;
int n;
long long suan[55],ku[55];
int ct=0;
int pp[400000];
bool vs[400000];
void dfs(int sd,long long s,long long k)
{
    if (sd<n)
    {
        pp[ct]=abs(s-k);
        ct++;
    }
    else
    {
        pp[ct]=abs(s-k);
        ct++;
        return;
    }
    
    for (int i=sd;i<=n;i++)
    {
        if (!vs[i])
        {
            vs[i]=1;
            if (s!=0)
            {
            dfs(sd+1,s*suan[i],k+ku[i]);   
            }
            else
            {
            dfs(sd+1,suan[i],k+ku[i]);   
            }
            vs[i]=0;
        }
    }
    return;
}

int main()
{
    cin>>n;
    for (int i=0;i<400000;i++) vs[i]=0;
    for (int i=1;i<=n;i++)
    {
        cin>>suan[i]>>ku[i];
    }
    dfs(0,0,0);
    sort (pp,pp+ct-1);
    int zz=0;
    while (pp[zz]==0)zz++;
    cout <<pp[zz];
}

代码问题不是很大,但也有点大,整体上好像没啥问,就第一个和最后一个测试点没过,盖了帽了

2021/4/18 01:01
加载中...