关于分段错误的有趣观察

问题描述

所以,我的代码在下面

#include <iostream>
#include <queue>
using namespace std;
bool comp (pair<int,int> a,pair<int,int> b) {
    if (a.second==b.second) return a.first<b.first;
    return a.second<b.second;
}
int main () {
    int n,m;
    bool visited[n+1];
    cin>>n>>m;
    int mat[n+1][n+1];
    vector<pair<int,int> > v;
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=n; j++) {
            cin>>mat[i][j];
        }
    }
    queue<pair<int,int> > q;
    q.push(make_pair(m,0));
    visited[m]=1;
    //for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { if (mat[i][j]!=0&&mat[i][j]!=1 )cout<<mat[i][j]<<" ";} cout<<endl;}
    while (!q.empty()) {
        pair <int,int> curr=q.front();
        v.push_back(curr);
        q.pop();
        for (int i=1; i<=n; i++) {
            if (mat[curr.first][i]&&!visited[i]&&curr.first!=i) {
                q.push(make_pair(i,curr.second+1));
                visited[i]=1;
            }
        }
    }
    sort(v.begin(),v.end(),comp);
    int cdist=0;
    for (pair<int,int> i: v) {
        if (cdist!=i.second) cout<<endl;
        cdist=i.second;
        cout<<i.first<<" ";
    }
    return 0;
}

我知道问题出在哪里,不必为此烦恼,我在声明n之前声明了一个长度为[n + 1]的访问数组。这是一个实验。我发现有趣的是,如果我在代码中包括了注释行,则代码中的最后一个循环将完全打印我想要的内容,而如果我将其排除在外,则代码将不会打印任何内容。为什么会出现这种现象?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...