题      目    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58

思路借鉴   DFS-Deep First Search-深度优先搜索 - 卓华寅的文章 - 知乎

收获总结

1. 重定向输入输出流:freopen( "filename" , "mode" ,stream );

          filename:文件名(文件存储在在代码目录下)/文件路径。

          mode:操作模式,操作权限,"r"表示“只读访问”、"w"表示“只写访问”、"a"表示“追加写入”。

          stream:需要被重定向的文件流。stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。

关闭重定向输入输出流:freopen( "CON","r",stdin );不关闭的话,后续无法使用键盘输入的方式读取数据。

头文件:stdio.h

2.内存空间初始化:void * memset ( void * ptr, int value, size_t num );

 eg: memset(buf,0,sizeof(buf));

今天是第一次真正接触 DFS-深度优先算法的题目,虽然在数据结构与算法上已经学习过了,但没有实践,早就忘记了(ノへ ̄、)。平时看到这样的题直接忽略,今天终于直面它了。在这之前做的NYOJ 32 组合数完全没有思路,烦躁!后来这道题和迷宫题完全重合,直接套就行,于是让我找回了自信,顺带理解了DFS的迷宫问题。

不过还有一个问题,应该是评测的锅,使用freopen一直是WA,但将迷宫直接以二维数组存储就能够AC了。

WA代码

 #include<stdio.h>
 ;
 ][],book[][];
 int sx,sy,ex,ey,min;
 ][]={{-,},{,},{,},{,-}};

 void dfs(int x,int y,int step)
 {
     int tx,ty;
     if(x==ex&&y==ey)
     {
         if(min>step)
             min=step;
         return ;
     } 

     ;i<;i++)
     {
         tx=x+next[i][];
         ty=y+next[i][];
         ||tx>||ty<||ty>) continue;
         &&book[tx][ty]==)
         {
             book[tx][ty]=;
             dfs(tx,ty,step+);
             book[tx][ty]=;
         }
     }
 }
 int main()
 {
     freopen("in.txt","r",stdin);
     ;i<;i++)
         ;j<;j++)
             scanf("%d",&num[i][j]);
     freopen("CON", "r", stdin);
     int n;
     scanf("%d",&n);
     while(n--)
     {
         min=max;
         scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
         book[sx][sy]=;
         dfs(sx,sy,);
         printf("%d\n",min);
     }
     ;
 }

AC代码

 #include<stdio.h>
 #include<memory.h>
 ][];
 ][]={
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,,
  ,,,,,,,,
 };
 ;
 ][]={{-,},{,},{,},{,-}};
 ];
 void dfs(int x,int y,int step){
     if(x==ex && y==ey){
         if(min>step)    min=step;
         return ;
     }

     ;i<;i++){
         ];
         ];

         ||tx<||ty>||ty<) continue;
         &&maze[tx][ty]==)
         {
             book[tx][ty]=;
             dfs(tx,ty,step+);
             book[tx][ty]=;
         }
     }
 }
 int main(){

     int n;
     scanf("%d",&n);
     ;i<n;i++){
         min=max;
         memset(book,,sizeof(book));
         scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
         book[sx][sy]=;
         dfs(sx,sy,);
         ans[i]=min;
     }
     ;i<n;i++)
         printf("%d\n",ans[i]);
     ;
 } 

NYOJ 53 最少步数的更多相关文章

  1. NYOJ 58 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  2. nyoj 1022 最少步数【优先队列+广搜】

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  3. ACM 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  4. [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)

    Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...

  5. 最少步数(bfs)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  6. 最少步数(dfs + bfs +bfs优化)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  7. 最少步数(bfs)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  8. T1330 最少步数(#Ⅱ- 8)(广度优先搜索)

    [题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字.他的同桌平时喜欢下围棋, ...

  9. NYOJ-58最少步数,广搜思想!

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 ->   Link  <- 这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了:一般起点终点确定用广搜 ...

随机推荐

  1. Storm 学习之路(九)—— Storm集成Kafka

    一.整合说明 Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对0.8.x版本的Kafka提供整合支持: Storm ...

  2. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  3. 【设计模式】行为型02模板方法模式(Template Method Patten)

    五一长假,没有出去,不喜欢嘈杂的人群,玩了会游戏发泄了下憋在心底的戾气,手旁大马克杯里是母亲泡的绿茶.点开自己的播放列表,耳机里传来的是理查德克莱德曼的致爱丽丝.自己是个凡人,卑微渺小的活着.不说废话 ...

  4. K8s集群部署(四)------ Flannel网络部署

    所有节点都要部署Flannel网络,在所有节点操作. 1.为Flannel生成证书 [root@k8s-master ssl]# pwd /usr/local/src/ssl [root@k8s-ma ...

  5. 交叉编译多平台 FFmpeg 库并提取视频帧

    原文地址: 交叉编译多平台 FFmpeg 库并提取视频帧 交叉编译多平台 FFmpeg 库并提取视频帧 本文档适用于 x86 平台编译 armeabi.armeabi-v7a.arm64-v8a.x8 ...

  6. POJ 3318:Matrix Multiplication(随机算法)

    http://poj.org/problem?id=3318 题意:问A和B两个矩阵相乘能否等于C. 思路:题目明确说出(n^3)的算法不能过,但是通过各种常数优化还是能过的. 这里的随机算法指的是随 ...

  7. SpringBoot使用Docker快速部署项目

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...

  8. 解决 Prometheus 不能获取 Kubernetes 集群上 Windows 节点的 Metrics

    背景 接上一篇 快速搭建 Windows Kubernetes , 我们发现原来在 Windows Kubernetes 会有一些与在 Linux 上使用不一样的体验,俗称坑,例如 hostAlias ...

  9. Greenplum+mybatis问题解析

    1. 问题描述 同事团队在使用springboot+mybatis+Greenplum时,发现通过mybatis数据查询正常,但是执行insert和update执行会报"Cause: org ...

  10. markdown的博客

    测试一下markdown写博客 function firstProgram() { console.log("This is my first markdown blog"); }