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

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

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

int T, N;

struct plane
{
    int T; // 到达机场上空的时刻
    int D; // 能继续盘旋的时间
    int L; // 降落过程需要的时间 
};

plane a[20];
int vis[20] = {0};
int flag = 0; // 标志位,表示是否能成功降落

void dfs(int x, int time)
{
    if(x > N)
    {
        flag = 1;
    }

    if(flag)
    {
        return;
    }

    for(int i = 1; i <= N; i++)
    {
        if(!vis[i])
        {
            if(a[i].T + a[i].D < time)
            {
                return;
            }
            vis[i] = 1;
            dfs(x+1, max(time, a[i].T) + a[i].L);
            vis[i] = 0;
        }
    }
}

int main()
{
    cin >> T;
    while(T--)
    {
        cin >> N;
        flag = 0;
        for(int i = 1; i <= N; i++)
        {
            cin >> a[i].T >> a[i].D >> a[i].L;
        }
        dfs(1,0);
        if(flag == 1)
        {
            cout << "YES" << endl;
        }
        else
        {
            cout << "NO" << endl;
        }
    }

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