求大佬们帮忙看看,测试案例和其他帖子里的案例都是对的,为什么全wa
查看原帖
求大佬们帮忙看看,测试案例和其他帖子里的案例都是对的,为什么全wa
866522
Zh_li4r8q楼主2024/4/9 19:34
#include <bits/stdc++.h>
using namespace std;
const  int N=10+20;//防止越界
struct airport
{
    int t,d,l;
}p[N];

bool re[N];//判断飞机是否已经降落

int n;//事实上飞机的数量

//说到底主要用的是递归
bool DFS(int u,int time){
    if(u>=n)
        return true;
    for(int i=0;i<n;i++){
        if(!re[i]){
            re[i]=true;
            if(time>(p[i].t+p[i].d))
            {
                re[i]=false;
                return false;
            }
            int t=max(time,p[i].t)+p[i].l;
            if(DFS(u+1,t))
            return true;
            //下一次的安排是错的,
            //就说明这一次是错的,
            //所以不选这个,直接回到起点,
            //选择其他结点
            //其实是相当于把所有的结点都遍历了
            re[i]=false;
        }
    }
    return false;//前面全部遍历完了都没有return true
    //就说明这所有的组合都是错误的
}
void solve()
{
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>p[i].t>>p[i].d>>p[i].l;
    }
    if(DFS(0,0))
    cout<<"YES"<<endl;
    else
    cout<<"NO"<<endl;
}
int main(){
    int T;
    cin>>T;
    while (T--)
    {
        solve();
    }
}
2024/4/9 19:34
加载中...