城市路径数——华为笔试 2013.08.31

来源:互联网 发布:查找客户资料的软件 编辑:程序博客网 时间:2024/04/29 07:19

题目大概是这样的:输入N A B,N为城市个数,A为起始城市标识,B为目标城市标识。接着输入N行,每行N个数字(0或者1)表示该行所标识的城市是否有到其他城市的路径。

输出从A到B的路径条数。


以下代码在VC++6.0运行通过。


#include <iostream>#include <string>#include <vector>#include <math.h>using namespace std;#define for if (0); else forint path = 0;int **p;int **q;int main (){int n,a,b;int findpath(int n, int a, int b);cin>>n>>a>>b;p = new int*[n];for(int i=0; i<n; ++i)p[i] = new int[n];q = new int*[n];for(int i=0; i<n; ++i)q[i] = new int[n];for(int i=0; i<n; ++i)for(int j=0; j<n; ++j)q[i][j]=0;for(int i=0; i<n; ++i)for(int j=0; j<n; ++j)cin>>p[i][j];findpath(n,a,b);cout<<path;return 0;}int findpath(int n, int a, int b) {for(int i=0; i<n; ++i){if(!q[i][a]) {if(a!=i && p[a][i]==1){q[i][a]=1;if(i==b)++path;elsefindpath(n,i,b);}}}return 0;}


原创粉丝点击