天天看点

C++建立二维数组,输入计算动物园最短路径

题目描述:

C++建立二维数组,输入计算动物园最短路径
//一维数组是指针,可将二维数组看作是指针的指针:每一行是一个一维数组,而列是指向行的指针。
//在动态创建时,先分配指向行的指针空间,再循环维每一行申请空间
#include <iostream>
#include <string>
using namespace std;
#define MAX 10000000

int main(void)
{
    int **p;
    int num, des, i, j, k;
    cin>>num>>des;
    p = new int*[num];//申请行的空间                                  
    for(i = ; i < num; i++)
        p[i] = new int[num];//申请列的空间
    for(i = ; i < num; i++)
        for(j = ; j < num; j++)
        {
            cin>>p[i][j];
            if(p[i][j] == )
                p[i][j] = MAX;
        }


        for(k = ; k < num; k++)
        for(i = ; i < num; i++)  //从i=0开始,j依次取值到
        for(j = ; j < num; j++)
        {
            if(p[i][k] + p[k][j] < p[i][j]) //i到k,k到j,路径小于直接i到j管。
            {
                p[i][j] = p[i][k] + p[k][j];
            }
        }

        cout<< p[][des];
        for(i = ; i < num; i++)//第一次释放内存
                delete []p[i];  
        delete p;  //第二次释放内存

                return ;
}
           

继续阅读