📄 main.cpp
字号:
/*****************************************************************************
15. 已知6个城市,用c[i,j]表示从i城市到城市j是否有单向的直达汽车
(1=<i〈=6,1〈=j〈=6), c[i,j]=1 表示城市i到城市j有单向直达汽
车; 否则 c[i,j]=0. 试编制程序,对于给出的城市代号i,打印出从该城市出
发乘车(包括转车)可以到达的所有城市。
******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <queue>
using namespace std;
#define N 6
//城市是否被访问
static int access[N];
//城市交通图
static int map[N][N];
void PrintMap()
{
int i,j;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%3d",map[i][j]);
printf("\n");
}
}
void PrintAttach(int m)
{
int i;
for(i=0; i<N; i++)
{
if(i!=m && access[i])
printf("%3d",i);
}
printf("\n");
}
void main()
{
int m;// 城市代号
int i,j;
queue <int> q;
srand(time(0));
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
map[i][j] = rand()%2;
}
PrintMap();
printf("请选择一个城市,代号为m(0<=m<=5):");
scanf("%d",&m);
if(m<0 || m>5)
{
printf("代号m不符合要求!");
return;
}
access[m] = 1;
q.push(m);
while(!q.empty())
{
int k;
int cur;
cur = q.front();
q.pop();
for(k=0; k<N; k++)
{
if(access[k] == 0 && map[cur][k] == 1)
{
access[k] = 1;
q.push(k);
}
}
}
PrintAttach(m);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -