⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 我做的一些C语言练习题,里面一共有76道题目,主要用到一些计算机常用的算法,如:递归,分治,动态规划,回溯法,AO算法等,除此之外还用到比较多的数学知识,我做了一部分,还有一些暂时还没做出来,大家也帮
💻 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 + -