DFS与BFS

1.给定n*m地图,A,B,C,D分别为不同受瘟疫影响程度,X代表不受瘟疫影响,然后再给出I个坐标,表示该点瘟疫程度加重,当瘟疫程度为D时加重,将会向四周扩散,当四周瘟疫程度也为D时,将进行连锁反应,但每个连锁反应的D只能扩散一次,输出最后的地图。

思路1:DFS

void dfs(int x,int y)
{
	int x1,y1,i,j;
	if(maze[x][y]=='X')return;//如果当前不可侵入则退出
	if(maze[x][y]=='D')//如果为D则扩散
        {
		if(mark[x][y]==flag)return;//如果扩散过一次则退出
		mark[x][y]=flag;
		for(i=0;i<4;i++)//向四周深搜
                {
			x1=x+dir[i][0];
			y1=y+dir[i][1];
			if(x1>=0&&x1<n&&y1>=0&&y1<m)   {
				dfs(x1,y1);
			}
		}
	}
	else maze[x][y]++;//不是D就加重程度
}

思路2:BFS

与DFS差不多,就是将扩散的点加入队列。

2.给定14个数字(都是1到9),判断是否是4组3个元素递增或者相同和1组2个元素相同,跟麻将类似,比如说(1,2,3)(4,5,6)(7.,8,9)(7,7,7)(9,9)。

思路:DFS,预处理统计1到9每个数字的个数,然后遍历,找出个数大于2的进行深搜,当找到以上符合条件的+1,直到加到4退出。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值