m0_74298493 2023-06-03 20:34 采纳率: 0%
浏览 11

小白发问:栈溢出要怎么处理?

看看这是啥问题嘛,标有红色叉的说是栈溢出了,但我怎么改还是这样啊

img

img

以下是全部代码

#include <fstream>
#include <sstream>
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
#define max 100000
string name[1000];
int map[1000][1000];
int i, j, v1, v2, u, min;
int s[1000], d[1000], p[1000];
void shuchu(int v1, int v2)
{
    int a[1000] = { 0 };
    int k = 0;
    k = v2;i = 1;
    while (k != v1)
    {
        i++;
        a[i] = k;
        k = p[k];
    }
    i++;
    a[i] = v1;
    u = i;
    cout << endl;
    cout << name[v1] << "->" << name[v2] << "的最短路径长度是:" << d[v2] << "米" << endl;
    if (u > 2)
    {
        cout << "具体路径是:" << endl;
        for (i = u;i > 2;i--)
            cout << name[a[i]] << "->" << name[a[i - 1]] << ":" << map[a[i]][a[i - 1]] << "米" << endl;
    }
}
void dijkstra(int v1, int v2)
{
    for (i = 1;i <= 14;i++)
    {
        s[i] = 0;
        d[i] = map[v1][i];
        if (d[i] < max) p[i] = v1;
        else p[i] = -1;
    }
    s[v1] = 1;d[v1] = 0;
    for (i = 1;i <= 14;i++)
    {
        min = max;
        for (j = 1;j <= 14;j++)
        {
            if (s[j] == 0 && d[j] < min)
            {
                i = j;min = d[j];
            }
        }
        s[i] = 1;
        for (j = 1;j <= 14;j++)
        {
            if (s[j] == 0 && (d[i] + map[i][j] < d[j]))
            {
                d[j] = d[i] + map[i][j];
                p[j] = i;
            }
        }
    }
}
int main()
{

    cout << "      ==================== 广东外语外贸大学校园导航 ======================     " << endl;
    cout << "      =                                                                  =     " << endl;
    cout << "      =   1. 1饭     2. 2饭     3. 3饭        4.南苑        5. 北苑      =     " << endl;
    cout << "      =   6. 师苑    7. 又康    8. 门诊部     9. 教学区     10. 图书馆   =     " << endl;
    cout << "      =   11. 实验楼 12. 体育场 13. 篮球场    14. 校办公室   0. 退出     =     " << endl;
    cout << "      =                                                                  =     " << endl;
    cout << "      ====================================================================     " << endl;

    cout << endl;

    name[1] = "1饭";
    name[2] = "2饭";
    name[3] = "3饭";
    name[4] = "南苑";
    name[5] = "北苑";
    name[6] = "师苑";
    name[7] = "又康";
    name[8] = "门诊部";
    name[9] = "教学区";
    name[10] = "图书馆";
    name[11] = "实验楼";
    name[12] = "体育场";
    name[13] = "篮球场";
    name[14] = "校办公室";

    for (i = 1;i <= 14;i++)
        for (int j = 1;j <= 14;j++)
        {
            if (i == j)
                map[i][j] = 0;
            else
                map[i][j] = max;
        }

    string filename;
    filename = R"(D:\zuoye\duru.txt)";
    ifstream fin(filename, ios::in);
    if (fin.is_open() == false)
    {
        cout << "打开文件" << filename << "失败。" << endl;
        return 0;
    }
    int n, m, y;
    while (!fin.eof())
    {
        fin >> n >> m >> y;
        map[n][m] = map[m][n] = y;
    }

    cout << "请输入起点:";
    cin >> v1;
    if (v1 == 0)
    {
        cout << endl;
        cout << "欢迎下次使用!" << endl;
    }
    else 
    {
        cout << "请输入终点:";
        cin >> v2;
        dijkstra(v1, v2);
        shuchu(v1, v2);
    }
    fin.close();
    return 0;
}

  • 写回答

2条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2023-06-03 21:22
    关注

    打印出来 i 的值,检查这些变量都是如何变化的。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月3日

悬赏问题

  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图