题目描述:
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 ;
}