华为上机第二题
2013-08-12 10:08
232 查看
输入:N A B N表示有多少个城市,A表示要出发的城市,B表示要到达的城市
接着输入N*N的矩阵, 表示任意两个城市是否连通,连通用1表示,否则用0表示;
如:
3 0 2
1 1 1
1 1 1
1 1 1
输出: 从A到B共有多少条路。
#include <iostream>
#include <algorithm>
using namespace std;
#define M 100
int arr[M][M];
int counter=0;
int N,A,B;
void find(int k,int B,int A)
{
if(k==B)
{
++counter;
return ;
}
for(int i=0;i<N;++i)
{
if(arr[k][i]==1 && k!=i && i!=A)
find(i,B,k);
}
}
int main()
{
int i,j;
cout<<"输入N A B:"<<endl;
cin>>N>>A>>B;
cout<<"输入城市间的连接矩阵(图的矩阵表示形式):"<<endl;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
cin>>arr[i][j];
}
}
if(A>B)
swap(A,B);
for(i=0;i<N;++i)
{
if(arr[A][i]==1 && A!=i)
find(i,B,A);
}
cout<<counter<<endl;
return 0;
}
接着输入N*N的矩阵, 表示任意两个城市是否连通,连通用1表示,否则用0表示;
如:
3 0 2
1 1 1
1 1 1
1 1 1
输出: 从A到B共有多少条路。
#include <iostream>
#include <algorithm>
using namespace std;
#define M 100
int arr[M][M];
int counter=0;
int N,A,B;
void find(int k,int B,int A)
{
if(k==B)
{
++counter;
return ;
}
for(int i=0;i<N;++i)
{
if(arr[k][i]==1 && k!=i && i!=A)
find(i,B,k);
}
}
int main()
{
int i,j;
cout<<"输入N A B:"<<endl;
cin>>N>>A>>B;
cout<<"输入城市间的连接矩阵(图的矩阵表示形式):"<<endl;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
cin>>arr[i][j];
}
}
if(A>B)
swap(A,B);
for(i=0;i<N;++i)
{
if(arr[A][i]==1 && A!=i)
find(i,B,A);
}
cout<<counter<<endl;
return 0;
}
相关文章推荐
- 华为9月14日上机考试题(第二题)
- 2012届华为校园招聘上机考试题目(9月6日下午1点场)第二题及代码
- 华为上机第二题
- 华为2016上机考试第二题
- 2016华为校招上机笔试练习题1
- 华为上机题汇总(二)
- 华为上机测试题(及格分数线-java)
- 华为上机测试题(MP3光标移动-java)
- 华为2011上机笔试题1+参考程序
- 华为上机笔试 难题
- 华为三道上机题解答
- 2012届华为校园招聘上机考试题目--成都
- 华为2012校园招聘上机编程题(3)
- 一道华为校园招聘软件研发上机测试题及我个人解法
- 2013华为上机-装满篮子问题-回溯法
- 2014年华为上机题及代码
- 华为上机题 2013 [重庆]
- 华为2013年的一题上机笔试题(关于字符串)
- 华为2011上机笔试题2+参考程序
- 2010年华为上机笔试二(高精度整数加法)