这是我的代码,给的实例都可以跑通,但是提交的时候全错,各位大佬请问这是为什么,我哪里有问题
#include<iostream>
using namespace std;
const int N = 15;
int T[N];//到达上空的时刻 T 最早 T降落
int D[N];//还可以继续盘旋的时间 最晚T+D
int L[N];//降落要的时间 等待时间+L整个过程的时间
int arr[N];//存顺序
bool st[N];//状态
int n;
bool return1 = false;
void dfs(int x) {
if (return1) {
return;
}
if (x > n) {
int allTime = 0;
bool return0 = true;
for (int i = 1;i <= n;i++) {//用arr[i]衡量
if (i == 1 ) {
allTime = L[arr[i]];
}
else if (allTime >= T[arr[i]] && allTime <= T[arr[i]] + D[arr[i]]) { //可以降落的时刻
allTime += L[arr[i]];
}
else if(allTime<T[arr[i]]){ //还没有来
allTime=T[arr[i]]+L[arr[i]];
}
else if (allTime > T[arr[i]] + D[arr[i]]) {
return0 = false;//此方法失败
break;
}
}
if (return0) {
return1 = true;
}
return;
}
for (int i = 1;i <= n;i++) {
if (!st[i]) {
st[i] = true;
arr[x] = i;
dfs(x + 1);
st[i] = false;
arr[x] = 0;
}
}
}
int main() {
int t;//组数
cin >> t;
while (t--) {
cin >> n;//n个飞机
for (int i = 1;i <= n;i++) {
cin >> T[i] >> D[i] >> L[i];
}
return1 = false;
dfs(1);//放第一个位置 过去的时间为0
if (return1) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
}
return 0;
}