没有一个能过,能帮我看看吗
  • 板块题目总版
  • 楼主Castaway66
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/12 10:57
  • 上次更新2024/3/12 16:46:38
查看原帖
没有一个能过,能帮我看看吗
810496
Castaway66楼主2024/3/12 10:57
#include <iostream>
#include <algorithm>
using namespace std;
const int N_MAX=11;
int N,T[N_MAX],D[N_MAX],L[N_MAX],T_;
bool ans;
bool vis[N_MAX];
void dfs(int pre,int tim){
	if(pre==N){
		ans=1;
		return;
	}else{
		for(int i=1;i<=N;i++){
			if(!vis[i] && tim<=T[i]+D[i]){
				vis[i]=1;
				dfs(pre+1,max(T[i],tim)+L[i]);
				if(ans){
					return;
				}else{
					vis[i]=0;
				}
			}
			if(tim>T[i]+D[i]){
				return;
			}
		}
	}
}
void solve(){
	cin>>N;
	for(int i=1;i<=N;i++){
		cin>>T[i]>>D[i]>>L[i];
		vis[i]=0;
	}
	dfs(0,0);
	if(ans){
		cout<<"YES";
	}else{
		cout<<"NO";
	}
}
int main(){
	cin>>T_;
	while(T_--){
		ans=0;
		solve();
	}
	return 0;
} 
2024/3/12 10:57
加载中...