返回题解分享
讨论 / 题解分享/ 帖子详情

飞机降落(编程题) - 题解

#include<bits/stdc++.h>

using namespace std;

int n;
const int N =10;
int T[N],D[N],L[N];
bool st[N];
bool result;

void dfs(int u,int last){
    if(result) return;
    if(u == n){
        result = true;
        return;
    }
    for(int i =0;i<n;i++){
        if(!st[i]){
            if(T[i] + D[i] >= last){
                st[i] = true;
                if(T[i] > last) dfs(u+1,T[i]+L[i]);
                else dfs(u+1,last+L[i]);
                st[i] =false;
            }
            else return;
        }
    }
}

int main(){
    int t;
    cin >>t;
    while(t--){
        cin >> n;
        for(int i = 0;i<n;i++){
            cin>> T[i] >> D[i] >>L[i];
        }
        for(int i =0;i <= n;i++){
            st[i] = false;
        }
        result = false;
        dfs(0,0);
        if(result)cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }

    return 0;
}
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!