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

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

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

struct palne{
	int t,d,l;
}pl[12];
int flagpl[12];
int flag=0;
void dfs(int top,int len,int nowtime){
	if(top==len){
		flag=1;
		return;
	}
	
	for(int i=0;i<len;++i){
		if(flag==1) return;      //为了节省不必要的递归,找到了一种方案就直接退出 
		if(flagpl[i]!=1&&nowtime<=pl[i].t+pl[i].d){
			flagpl[i]=1;
			if(nowtime<pl[i].t) dfs(top+1,len,pl[i].t+pl[i].l);
			else dfs(top+1,len,nowtime+pl[i].l);
			flagpl[i]=0;
		}
	}
	return ;
	
}
int main(){
	int k;
	int n;
	cin>>k;
	for(int i=0;i<k;i++){
		cin>>n;
		for(int j=0;j<n;++j) cin>>pl[j].t>>pl[j].d>>pl[j].l;
		flag=0;
		dfs(0,n,0);
		if(flag==1) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!