#include<iostream>
#include<algorithm>
using namespace std;
int flag[10] = { 0 };
struct plane {
int t, d, l;
}p[10];
int n;
int dfs(int v, int time) {
if (n >= v)
return 1;
for (int i = 1; i < n; i++)
{
if (!flag)
flag[i] = 1;
if (p[i].t + p[i].d < time)
{
flag[i] = 0;
return 0;
}
int t = max(time, p[i].t) + p[i].l;
if (dfs(v + 1, t))
return 1;
flag[i] = 0;
}return 0;
}
int main()
{
int T;
cin >> T;
while (T--) {
cin >> n;
for (int i = 0; i < n; i++)
cin >> p[i].t >> p[i].d >> p[i].l;
if (dfs(0, 0))
cout << "yes" << endl;
else
cout << "no" << endl;
}
return 0;
}
蓝桥杯飞机降落c++,输出错误求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 陈垚不是瓜皮 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5在你提供的代码中,我发现了几个问题:
- 你在dfs函数中判断flag[i]的条件应该改为if (!flag[i]),而不是if (!flag)。
- 在for循环中,你应该从0开始遍历,而不是从1开始遍历。
- 在dfs函数中,如果递归到达终止条件时,应该返回1而不是返回0。
- 在dfs函数中,递归调用dfs时传入的第一个参数应该是v+1而不是0。
修改后的代码如下所示:
#include<iostream> #include<algorithm> using namespace std; int flag[10] = { 0 }; struct plane { int t, d, l; }p[10]; int n; int dfs(int v, int time) { if (n <= v) { return 1; } for (int i = 0; i < n; i++) { if (!flag[i]) { flag[i] = 1; if (p[i].t + p[i].d < time) { flag[i] = 0; return 0; } int t = max(time, p[i].t) + p[i].l; if (dfs(v + 1, t)) { return 1; } flag[i] = 0; } } return 0; } int main() { int T; cin >> T; while (T--) { cin >> n; for (int i = 0; i < n; i++) { cin >> p[i].t >> p[i].d >> p[i].l; } if (dfs(0, 0)) { cout << "yes" << endl; } else { cout << "no" << endl; } } return 0; }
解决方案:
- 修改dfs函数中判断flag[i]的条件为if (!flag[i])。
- 修改for循环中的遍历范围,从0开始遍历。
- 修改dfs函数中递归调用dfs的参数,将v+1传入递归调用。
- 在dfs函数中,当递归到达终止条件时,返回1,表示成功。
注意:以上解决方案是基于对你提供代码的错误进行修正。如果仍然存在其他问题,或者具体需求有误,请提供更多信息以便我进行进一步的帮助。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题
- ¥15 企业资源规划ERP沙盘模拟