zoj 1002 DFS

本文通过ZOJ1002题目详细介绍了如何使用深度优先搜索(DFS)算法解决具体问题,并展示了如何利用DFS参数记录搜索路径,包括代码实现及关键步骤。

 

      一直没弄过DFS,每次看见这个自己就发憷,不过问题总要去克服,我就从ZOJ 1002开始喽~

经过自己的不懈努力,哈哈,嘿嘿,最终当然搞定这个啦!!

 

      以前只是知道要记录搜索路径,但自己不知道到底怎么记录的。。。这次在网上搜了很多网友的代码,用dfs()的参数来记录的,觉得很不错~~

 

代码如下:

#include<stdio.h>
char map[4][4];
int n, num, max;
int check( int i, int j)
{
	int k;
	if(map[i][j] == '.')
	{
		for( k = j-1; k >= 0; k--)		// 检查左边是否有碉堡
		{
			if( map[i][k] == '!')
				return -1;
			else if( map[i][k] == 'X')
				break;
		}
		for( k = j+1; k < n; k++)		// 检查右边是否有碉堡
		{
			if(map[i][k] == '!')
				return -1;
			else if( map[i][k] == 'X')
				break;
		}
		for( k = i-1; k >= 0; k--)		// 检查上边是否有碉堡
		{
			if( map[k][j] == '!')
				return -1;
			else if(map[k][j] == 'X')
				break;
		}
		for( k = i+1; k < n; k++)		// 检查下边是否有碉堡
		{
			if( map[k][j] == '!')
				return -1;
			else if(map[k][j] == 'X')
				break;
		}
		return 1;
	}
	else
		return 0;
}

void dfs(int key)						// key 用来记录遍历数组的位置
{
	if( key == n*n)						// 递归结束的条件,总是忘记==!
	{
		max = max > num ? max : num;
		return;
	}
	int i = key / n, j = key % n;
	if(check(i,j) == 1)
	{
		num++;
		map[i][j] = '!';				//标记为碉堡
		dfs(key+1);
		num--;							// 还原,map[i][j] 的位置上不放置碉堡,从下一个位置找放碉堡的位置
		map[i][j] = '.';
	}
	dfs(key+1);							// 在下一个位置找放置碉堡的地方
}

int main()
{
	int i, j;
	while(scanf("%d", &n), n)
	{
		num = 0;
		max = 0;
		getchar();
		for( i = 0; i < n; i++)
		{
			for( j = 0; j < n; j++)
				map[i][j] = getchar();
			getchar();
		}
		dfs(0);
		printf("%d\n", max);
	}
	return 0;
}


 


 

源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 USB 眼图检测手段 本资源主要阐述了运用示波器检测 USB 眼图以及时序的检测手段,意在辅助测试工程师独立实施检测。以下是该检测手段的详细知识要点: 一、检测所需仪器设备 * 一台泰克 MSO 70404C 示波器,配备 1 条 P7340A(差分式)和 1 条 P7240(单端式)探针 * 一个 USB 检测夹具(泰克提供) * 三条 USB 线缆,其中 2 条为 A 口转 B 口型的 USB 线缆,另外 1 条为标准的 micro USB 数据线缆 * 一台个人电脑(建议使用笔记本电脑),预装 XHCI HSETT 检测软件 二、USB 眼图检测流程 1. 将差分探针连接至示波器的 CH1 通道,然后将差分探针的另一端连接至 USB 检测夹具上 J310 接口的中间两个引脚(留意正负极的连接)。 2. 通过 2 条 USB 线缆(A 口转 B 口型)将夹具上的 J35 和 J37 接口分别接入笔记本电脑的两个 USB 接口,夹具上的 J35 为供电接口,J37 为数据传输接口。 3. 使用 micro USB 线缆将夹具上的 J34 位置的 A 型 USB 接口与手机相连接,确保手机设置中已开启 USB 调试功能。 4. 将夹具上的单刀双掷开关(S6),调整至下方位置(INIT 红灯点亮)。 5. 检测线路的连接方式如图 1 所示。 6. 启动电脑上的 XHCI HSETT 软件后,点击 TEST 按钮进行操作,若手机与电脑均通过 USB 线缆正常连接至夹具,select device 框中将显示识别到的手机设备。 7. 在 Device Co...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值