NYOJ 53 最少步数
题 目 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 最少步数的更多相关文章
- 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 ...
- 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 ...
- 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 ...
- [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 ...
- 最少步数(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 ...
- 最少步数(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 ...
- 最少步数(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 ...
- T1330 最少步数(#Ⅱ- 8)(广度优先搜索)
[题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字.他的同桌平时喜欢下围棋, ...
- NYOJ-58最少步数,广搜思想!
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 -> Link <- 这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了:一般起点终点确定用广搜 ...
随机推荐
- SSM(六)JDK动态代理和Cglib动态代理
1.Cglib动态代理 目标类: package cn.happy.proxy.cglib; public class Service { public Service() { System.out. ...
- HTTP&HTTPS
主要参考文档:<图解HTTP> HTTP简介 什么是HTTP? HTTP:(HyperText Transfer Protocol),超文本传输协议,是一个基于请求和响应,无状态的,应用层 ...
- 第一个SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我 ...
- SPOJ:NPC2016A(数学)
http://www.spoj.com/problems/NPC2016A/en/ 题意:在一个n*n的平面里面,初始在(x,y)需要碰到每条边一次,然后返回(x,y),问最短路径是多长. 思路:像样 ...
- 《C#并发编程经典实例》学习笔记—2.7 避免上下文延续
避免上下文延续 在默认情况下,一个 async 方法在被 await 调用后恢复运行时,会在原来的上下文中运行. 为了避免在上下文中恢复运行,可让 await 调用 ConfigureAwait 方法 ...
- c# override用法
要扩展或修改继承的方法.属性.索引器或事件的抽象实现或虚实现,必须使用 override 修饰符. 在此例中,类 Square 必须提供 Area 的重写实现,因为 Area 是从抽象的 Shapes ...
- nexus私服快速update index方法
简单搭好nexus私服后,做好基本的配置. 稍微麻烦点的就是让其更新Jar索引文件.如果有耐心的话,完全可以通过在线更新索引的方式来做,但所消耗的时间较长,让人误以为出错了,不知所措. 下面介绍一种简 ...
- bzoj3125: CITY 题解
3125: CITY Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 486 Solved: 213[Submit][Status][Discuss] ...
- android_ratingBar
主文件 package cn.com.sxp;import android.app.Activity;import android.os.Bundle;import android.util.Log; ...
- KdTree && Octree 原理学习对比以及可视化分析--"索引树"
1. Kdtree 原理 k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索): 索引结构中相似性查询有两种基 ...