Sublime Text编译复杂C++代码无输出文件写入问题求助
问题:Bellman算法代码无法写入output.out文件
- 简单测试代码可正常输出到output.out
#include <bits/stdc++.h> using namespace std; int main(){ cout<<"hi"; return 0; }
- 包含Bellman算法的代码执行后仅显示「[Finished in 2.9s]」,无内容写入output.out
#include <bits/stdc++.h> #define FOR(i,a,b) for(int i=a;i<=b;++i) using namespace std; const int INF=1000000000; struct Edge{ int u,v,w; void inp(){ cin>>u>>v>>w; } void out(){ cout<<u<<' '<<v<<' '<<w<<' '; } }; int n,m; Edge ed[5005]; int D[2505]; void bellman(){ FOR(i,0,n-1) D[i]=-INF; D[s]=0; FOR(t,1,n-1) FOR(i,1,m){ int u=ed[i].u,v=ed[i].v,w=ed[i].w; if (D[u]!=-INF&&D[v]<D[u]+w) D[v]=D[u]+w; } FOR(t,1,n) FOR(i,1,m){ int u=ed[i].u,v=ed[i].v,w=ed[i].w; if (D[u]!=-INF&&D[v]<D[u]+w) D[v]=INF; } } int main(){ cin>>n>>m; FOR(i,1,m) ed[i].inp(); FOR(i,1,m) ed[i].out(); bellman(); cout<<D[n]; return 0; }
- 当前Sublime Build配置
{ "cmd": ["g++.exe", "-std=c++17", "${file}", "-o", "${file_base_name}.exe", "&&", "${file_base_name}.exe<input.inp>output.out"], "shell":true, "working_dir":"$file_path", "selector":"source.cpp" }
已尝试重置配置,问题仍存在,求解决方案。
排查与解决方案
修复代码中的明显错误
- 未定义变量
s:bellman()函数中D[s]=0;的s未声明,需补充定义。比如在全局变量区添加int s;,并在main中读取起点:cin>>n>>m>>s;(若题目中起点固定为1,可直接写D[1]=0;) - 非法换行符:
Edge::out()中的' '是非法字符,需改为标准换行符'\n',否则会触发编译或运行错误 - 数组下标越界风险:确认输入的
n不超过D数组的大小2504,m不超过ed数组的大小5004,避免运行时崩溃 - 最长路逻辑校验:当前代码实现的是最长路+正环检测,若需求是最短路,需调整初始值为
INF、松弛条件为D[v]>D[u]+w
- 未定义变量
调试运行,定位崩溃原因
- 临时修改Build配置,取消输出重定向,直接查看控制台错误:
运行后Sublime控制台会显示程序的报错信息(比如未定义变量、数组越界等),直接定位问题{ "cmd": ["g++.exe", "-std=c++17", "${file}", "-o", "${file_base_name}.exe", "&&", "${file_base_name}.exe"], "shell":true, "working_dir":"$file_path", "selector":"source.cpp" } - 也可在命令行进入代码目录,执行
${file_base_name}.exe < input.inp,查看控制台输出的错误提示
- 临时修改Build配置,取消输出重定向,直接查看控制台错误:
内容的提问来源于stack exchange,提问作者Yuu Chan
相关产品推荐
相关产品推荐

