水管工游戏

本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可。

代码如下:

#include<stdio.h>
int a[51][51];
int book[51][51],n,m,flag=0,top=0;
void dfs(int x,int y,int front);
struct note
{int x;int y;
}s[100];
int main(void)
{int i,j,num=0;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%d",&a[i][j]);}}dfs(1,1,1);if(flag==0){printf("impossible\n");}else{printf("\n");}return 0;
}
void dfs(int x,int y,int front)//front 的值为 1 ,2 ,3 ,4 分别表示进水口的位置在 左,上,右,下
{int i;    /* 测试当前栈内坐标 */
//    for(i=1;i<=top;i++)
//    {
//        printf("(%d,%d)",s[i].x,s[i].y);
//    }
//    printf("\n"); if(x==n&&y==m+1) //此处的判定条件为 m+1
    {flag=1;for(i=1;i<=top;i++){printf("(%d,%d)",s[i].x,s[i].y);}return ;}if(x<1||x>n||y<1||y>m){return ;}if(book[x][y]==1){return ;}book[x][y]=1;//将当前尝试坐标入栈 top++;s[top].x=x;s[top].y=y;if(a[x][y]>=5&&a[x][y]<=6)//当前水管是直管的情况
    {if(front==1){dfs(x,y+1,1);}if(front==2){dfs(x+1,y,2);}if(front==3){dfs(x,y-1,3);}if(front==4){dfs(x-1,y,4);}}if(a[x][y]>=1&&a[x][y]<=4)//当前水管是弯管的情况
    {if(front==1){dfs(x+1,y,2);dfs(x-1,y,4);}if(front==2){dfs(x,y+1,1);dfs(x,y-1,3);}if(front==3){dfs(x-1,y,4);dfs(x+1,y,2);}if(front==4){dfs(x,y+1,1);dfs(x,y-1,3);}}
//    book[x][y]=0; // 本语句可将标记数组复原,本题中可有可无 top--; //将当前尝试坐标出栈 return ;
}

转载于:https://www.cnblogs.com/lbd_smile/p/4568842.html

水管工游戏 (深搜)相关推荐

  1. 啊哈算法之水管工游戏

    先给不同状态的水管编给号吧 跟走迷宫一样的,深搜,每个dfs里遍历水管的状态,如果当前状态和水管指向的下一个状态能连通就深搜过去直到走到终点为止 上代码吧,这个代码是加强版,支持了更多的水管的编号,以 ...

  2. 水管工游戏——dfs

    问题描述: 水管工游戏是指如下图中的矩阵中,一共有两种管道,一个是直的,一个是弯的,所有管道都可以自由旋转,最终就是要连通入水口可出水口.其中的树为障碍物. 方案: 输入格式:输入的第一行为两个整数N ...

  3. 深度搜索--水管工游戏

    package com.xjj.Ah;import java.util.LinkedList;/*----深度搜索--水管工游戏----* 1. remove(),removeFirst():先移除在 ...

  4. android自定义水管流动,Android水管工游戏的简单脚本

    Unity3d脚本Android水管工游戏的简单脚本 using UnityEngine; using System.Collections; public class TestGoto : Mono ...

  5. 水管工游戏(随机地图版)

    /*水管工游戏 一块快矩形的土地 被分成N*M的单位正方形 现在这个土地上已经买有一些水管   水管将从(1,1)的左上方 延伸到(N,M)d的矩形下方的右下角右部边缘 水管只有两种     &quo ...

  6. tianchai 12023 水管工游戏(DFS搜索)

    题目描述(ID:12023) 标题: 水管工游戏 详情: 这小节有点难,看不太懂可以跳过哦. 最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N*M的单位正方形,现在这块 ...

  7. 搜索的实例——水管工游戏

    这是一个用深搜解题的例子. [题目描述] 最近小哈又迷上一个叫水管工的游戏.游戏的大致规则是这样的.一块矩形的土地上被分为 n*m 的单位正方形,现在这块土地上已经埋有一些水管,水管将从坐标(1,1) ...

  8. 水管工游戏:dfs(递归)

    添柴网这题好想不能评测,所以不确保代码的正确性 题目描述: 这小节有点难,看不太懂可以跳过哦. 最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N * M的单位正方形,现 ...

  9. 啊哈算法---水管工游戏

    游戏大致规则是:一块矩形土地被分成N*M的单位正方形,现在这块土地已经埋设了一些水管. 水管将从矩形土地的左上角左部边缘,延伸到右下角右部边缘. 水管只有两种:弯管和直管 弯管有四种状态 直管有两种状 ...

最新文章

  1. 基于2-channel network的图片相似度判别
  2. Android Region代码分析
  3. 怎样用MATLAB将矩阵输出为图像并存到硬盘上-图像保存到硬盘
  4. 多协程实例分析(一)
  5. python用pywin32库来隐藏windows文件
  6. plsql查看表空间_最佳实践—PG数据库系统表空间重建
  7. 中高级数论 [欧拉函数线性筛,二次剩余]
  8. Redis命令——键(key)
  9. 罗永浩直播间被问“这胖子是谁”,本人看到后崩溃
  10. WIN32_FIND_DATA
  11. 结构体类型指针做函数参数(C++)
  12. 奇怪的比赛|2012年蓝桥杯B组题解析第四题-fishers
  13. 从头认识java-16.4 nio的读与写(ByteBuffer的使用)
  14. while循环的基本用法
  15. Excel中数据截取
  16. 数据结构排序之“九阳神功”
  17. 2020.10小米校招一面
  18. WEB端显示三维地形模型
  19. ConcurrentHashMap(jdk1.8)讲解及常见面试题
  20. 网络游戏开发-基本设计

热门文章

  1. document.getElementById与getElementByName的区别
  2. HorizontalTable
  3. Linux普通用户启动tomcat
  4. head和tail命令详解
  5. 基于GTID模式MySQL主从复制
  6. 可穿戴医疗设备火爆背后的困境
  7. 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const
  8. ref和out 传递参数(C#)
  9. Emacs 使用YASnippet
  10. SIEM部署的几条最佳实践