zoukankan      html  css  js  c++  java
  • 水管工游戏---啊哈算法

    一块矩形土地被分隔N*M的单位正方形,现在这块土地上已经埋设一些水管,水管将从坐标(1,1)的矩形土地的左上角左部边缘,延伸到坐标(N,M)的矩形土地的右下角边缘。水管只有两种。一种弯的,一种直的。 
    每种管道将占据一个单位正方形土地。你现在可以旋转这些管道,使得其构成一个管道系统。标有树木的方格表示这里没有管道。 
    输入的第一行为两个整数N和M,接下来输入N行,每行有M个整数,表示地图中的每一个格子。其中0表示树木,1-6表示管道的六种不同的摆放方式。

     1 #include<stdio.h>
     2 int a[51][51];
     3 int book[51][51],n,m,flag=0;
     4 struct note{
     5 int x,y;
     6 }s[100];//加入一个栈,便于将结果打印出来 
     7 int top=0;
     8 void dfs(int x,int y,int front){
     9 if(x==n&&y==m+1){
    10 flag=1;
    11 for(int i=1;i<=top;i++)
    12 printf("(%d,%d)",s[i].x,s[i].y);//打印铺设结果 
    13 return;
    14 }
    15 if(x<1||x>n||y<1||y>m)//判断是否越界 
    16 return;
    17 if(book[x][y]==1)//判断是否使用过该路径 
    18 return ;
    19 book[x][y]=1;
    20 top++;//结果入栈 
    21 s[top].x=x;
    22 s[top].y=y;
    23 //当前水管是直管的情况 
    24 if(a[x][y]>=5&&a[x][y]<=6){ 
    25 if(front==1)
    26 {dfs(x,y+1,1); //进水口在左侧时,只能使用5号,这是下个位置,y+1是说明下个位置在右边,1是说明下个位置的进水口在左边 
    27 }
    28 if(front==2)
    29 dfs(x+1,y,2);
    30 if(front==3)
    31 dfs(x,y-1,3);
    32 if(front==4)
    33 dfs(x-1,y,4);
    34 }
    35 if(a[x][y]>=1&&a[x][y]<=4){
    36 if(front==1){
    37 dfs(x+1,y,2);
    38 dfs(x-1,y,4);
    39 }
    40 if(front==2){
    41 dfs(x,y+1,1);
    42 dfs(x,y-1,3);
    43 }
    44 if(front==3){
    45 dfs(x-1,y,4);
    46 dfs(x+1,y,2);
    47 }
    48 if(front==4){
    49 dfs(x,y+1,1);
    50 dfs(x,y-1,3);
    51 }
    52 }
    53 book[x][y]=0;
    54 top--;
    55 return;
    56 }
    57 int main(){
    58   int i,j,num=0;
    59   scanf("%d %d",&n,&m);
    60   for(i=1;i<=n;i++)
    61   for(j=1;j<=m;j++)
    62   scanf("%d",&a[i][j]);
    63   dfs(1,1,1);
    64   if(flag==0)
    65     printf("impossible
    ");
    66   else
    67     printf("找到铺设方案
    ");
    68 getchar();
    69 getchar();
    70 return 0;
    71 }
  • 相关阅读:
    用一次就会爱上的cli工具开发
    npm与package.json快速入门
    检查服务器端口状态
    浅谈数据库用户表结构设计
    CAP 定理的含义
    蓝绿部署、金丝雀发布(灰度发布)、A/B测试
    Dockerfile多阶段构建原理和使用场景
    Dockerfile 中的 CMD 与 ENTRYPOINT
    maven全局配置文件settings.xml详解
    Linux之根目录说明
  • 原文地址:https://www.cnblogs.com/ls-pankong/p/8433580.html
Copyright © 2011-2022 走看看