求助!这种深搜方式与题解中的是否有时间复杂度上的差异?(附注释)
查看原帖
求助!这种深搜方式与题解中的是否有时间复杂度上的差异?(附注释)
1270328
wht59111570楼主2024/11/22 20:51
#include<bits/stdc++.h>
using namespace std;

#define int long long 
#define N 50
int x,y;//小明好感,小红好感
int n,v,a[N],b[N];//如题目
int ans;
void dfs(int pos,int s)// pos是上一个数的下标,s是两人好感度之和
{
    if(ans==0) return;//剪枝
    if(s>v)
    {
        ans=min(abs(x-y),ans);//更新
    }
    if(pos==n) return;
    for(int i=pos+1;i<=n;i++)
    {
        x+=a[i];
        y+=b[i];
        dfs(i,s+a[i]+b[i]);
        //回溯
        x-=a[i];
        y-=b[i];
    }
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>v;
    ans=1919888810;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
    }

    dfs(0,0);

    if(ans==1919888810) cout<<"-1";
    else cout<<ans;
    return 0;
}
2024/11/22 20:51
加载中...