飞机降落
用dfs做,暴力枚举每一个飞机,不满足条件就return false
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N=12;
int T,n;
bool st[N];
struct Plane
{
int t,d,l;
}plane[N];
bool dfs(int u,int last)
{
if(u==n) return true;
for(int i=0;i<n;i++)
{
int t=plane[i].t,d=plane[i].d,l=plane[i].l;
if(!st[i]&&t+d>=last)
{
st[i]=true;
if(dfs(u+1,max(last,t)+l)) return true;
st[i]=false;
}
}
return false;
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
bool flag;
for(int i=0;i<n;i++)
{
int t,l,d;
scanf("%d%d%d",&t,&l,&d);
plane[i]={t,l,d};
}
flag=dfs(0,0);
if(flag) printf("YES\n");
else printf("NO\n");
memset(st,0,sizeof(st));
}
return 0;
}