题目:


打算用dfs算法写
#include<stdio.h>
int N;
const int n=11;
int T[n],D[n],L[n];
bool have_answer,used[n]; //used[n] 飞机是否降落过
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
void dfs(int x,int time)
{
if(have_answer) return;
if(x==N)
{
have_answer=1;
return;
}
for(int i=1;i<=N;++i)
{
if(!used[i]&&T[i]+D[i]>=time)
used[i]=1;
dfs(x+1,max(T[i],time)+L[i]);
if(have_answer) return;
used[i]=0;
}
}
void solve()
{
have_answer=0;
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
scanf("%d %d %d",&T[i],&D[i],&L[i]);
used[i]=0;
}
dfs(0,0);
if(have_answer) printf("YES\n");
else printf("NO\n");
}
int main()
{
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}
代码没有输出结果,帮忙找找错