蓝桥杯危险系数以及深搜笔记

在这里插入图片描述

#include<iostream>
using namespace std;
int n,m,u,v;//站点个数,通路个数,起点,终点
int map[1005][1005]={0};//邻接矩阵
int r[1005]={0};//记录是否走过该点
int num[1005]={0};//记录每个点在所有通路中出现次数
int ans=0;//记录通路条数
int main(){
	void dfs(int x);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		map[u][v]=map[v][u]=1;
	}
	cin>>u>>v;
	r[u]=1;
	dfs(u);
	int res=0;//记录答案
	for(int i=1;i<=n;i++){
		if(num[i]==ans) res++;//如果该点在所有通路中出现的次数和通路出现的次数相等,那么该点一定是关键点
	}
	cout<<res-2;//记录时把起点终点也算进去了,所以要减去2
}

void dfs(int x){
	if(x==v){//如果搜的这个点是终点,则是通路
		ans++;//通路个数加一
		for(int i=1;i<=n;i++){
			if(r[i]) num[i]++;//在这条通路中出现的点次数加一
		} 
		return;
	} 
	for(int i=1;i<=n;i++){
		if(r[i]) continue;//如果是已经走过的,继续循环
		else if(map[x][i]){//(x,i)有路
			r[i]=1;//标记i点已经走过
			dfs(i);//寻找i以后的路
			r[i]=0;//等到尝试完,取消标记这个点
		}
	}
}

顺带复习一下深搜,β胡罗卜素博主的代码写得很好,我这里放上他的代码

#include<iostream>
using namespace std;

int n, m, p, q, min = 999999;
int a[51][51], book[51][51];
void dfs(int x, int y, int step) {//其中的坐标为第x行的第y列,即(x,y),左上角即为(1,1)
 int next[4][2] = {
  {0,1},//向右
  {1,0},//向下
  {0,-1},//向左
  {-1,0}//向上
 };
 int tx, ty, k;
 //判断是否到达目的地
 if (x == p && y == q) {
  if (step < min) {
   min = step;
   return;
  }
 }
 for (k = 0; k <= 3; k++) {
  tx = x + next[k][0];
  ty = y + next[k][1];
  //不能越界
  if (tx<1||ty<1||tx>n||ty>m)
  {
   continue;
  }
  if (a[tx][ty]==0&&book[tx][ty]==0)
  {
   book[tx][ty] = 1;//标记一下,走过了
   dfs(tx, ty, step + 1);
   book[tx][ty] = 0;//等到尝试完,取消标记这个点
  }
 }
 return;
}

int main() {
 int i, j, starX, starY;
 cin >> n >> m;
 for (i = 1; i <= n; i++) {
  for (j = 1; j <= m; j++)
  {
   cin >> a[i][j];//输入地图
  }
 }
 cin >> starX >> starY >> p >> q;//输入起点和终点的行列坐标
 book[starX][starY] = 1;//标记起点已经走过
 dfs(starX, starY, 0);
 cout << min;
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 闫学灿老师的蓝桥杯C语言课程笔记是一份非常实用和全面的学习资料。在这份笔记中,他以蓝桥杯C语言竞赛为出发点,系统地介绍了C语言的基本知识、编程技巧和解题思路。 首先,这份笔记C语言的基础知识进行了详细的讲解。从数据类型、运算符、控制结构、数组到函数,每个知识点都有清晰的定义和示例。这使得初学者能够迅速上手,了解C语言的基本特性和语法规则。 其次,笔记中还涉及了各种常用的C语言编程技巧。比如,如何进行输入输出、如何进行字符串处理、如何进行文件操作等等。这些技巧是实际编程中经常用到的,通过学习这些技巧,可以提高编程效率和代码质量。 另外,在笔记的后半部分,闫学灿老师还分享了他在蓝桥杯C语言竞赛中的解题思路和经验。这对于想要参加蓝桥杯的学生来说,无疑是非常有价值的。他详细讲解了一些比较经典的题目,以及如何从题目中找到思路和解决方案。 总的来说,闫学灿老师的蓝桥杯C语言课程笔记是一份非常实用和全面的学习资料。不仅适合蓝桥杯竞赛的学生,也适合其他对C语言感兴趣的学习者。通过学习这份笔记,可以提高自己的C语言编程能力,并为今后的编程学习和工作打下坚实的基础。 ### 回答2: 闫学灿是一位知名的编程教育家,他在蓝桥杯C语言方面有着丰富的教学经验和深厚的专业知识。他的课程笔记蓝桥杯C语言题目为主线,介绍了C语言的基础知识、高级应用以及解题技巧等内容。 在蓝桥杯C语言竞赛中,学生们通常需要使用C语言编写程序来解决一系列问题。闫学灿的课程笔记通过对大量题目的剖析和解析,帮助学生理解问题的本质,掌握解题的思路和方法。他的讲解通俗易懂,注重实例演示,让学生能够更好地理解和掌握。 课程笔记中,闫学灿详细介绍了C语言的基础语法、控制结构、数组、指针等重要知识点,并通过大量编程实例来巩固学生的学习成果。他注重培养学生的实际动手能力,通过编程实践来提高学生的编程水平和解题能力。 此外,闫学灿的课程笔记还包括了一些高级应用,如字符串处理、递归、动态内存分配等,以及一些重要的算法和数据结构,如排序、查找等。通过这些内容的学习,学生可以更全面地掌握C语言的使用和应用。 总的来说,闫学灿的蓝桥杯C语言课程笔记全面系统地介绍了C语言的基础知识和应用技巧,通过丰富的编程实例和解题思路的讲解,帮助学生在蓝桥杯竞赛中取得更好的成绩,并提高他们的编程水平和解决问题的能力。这样的课程材料对于C语言爱好者和想要参加蓝桥杯竞赛的学生来说都是非常有价值的参考资料。 ### 回答3: 蓝桥杯C语言是由蓝桥杯组织举办的一项程序设计竞赛。参赛者需要使用C语言编写程序解决一系列算法和编程题目。 闫学灿(Y总)是一位知名程序员,他开设了一系列C语言课程笔记,内容丰富全面,对于初学者和有一定基础的编程爱好者都非常有帮助。 在闫学灿的C语言课程笔记中,他详细讲解了C语言的基础知识,包括变量、数据类型、运算符、流程控制等等。他还介绍了C语言的一些特性和编程技巧,例如指针、结构体、文件操作等。通过学习这些内容,可以帮助我们更好地理解和运用C语言。 闫学灿的C语言课程笔记还包含了许多实例和练习题,通过实践的方式帮助我们巩固所学的知识。他还提供了一些实际项目的源码和解决方案,让我们可以实际操作和应用所学的知识。 总的来说,蓝桥杯C语言闫学灿(Y总课程笔记)是一门非常优秀的课程,对于想要学习C语言并参加蓝桥杯竞赛的学生来说是很好的学习资料。通过学习这门课程,我们可以系统地学习和掌握C语言的知识,并通过实践提高我们的编程能力和解决问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值