技术标签: POJ
题目描述:
读入一个矩阵,0表示可以通过,1表示不可以通过,矩阵周围的一圈也可以通过。任意给两个点A,B,判断是否能从A到达B,若能到达,输出所有路径中拥有折线段数最少的那个。
别人的程序:
想法是DFS+剪枝,用方向的改变次数来计算折线段数。DFS函数参数为:本次访问的点,已有的折线段数,方向。
#include <iostream>
#include <stdio.h>
using namespace std;
#include <memory.h>
#define MAXIN 75
char board[MAXIN+2][MAXIN+2];
int minstep,w,h,to[4][2]={
{
1,0},{
0,1},{
-1,0},{
0,-1}};
bool mark[MAXIN+2][MAXIN+2];
void Search(int now_x,int now_y,int end_x,int end_y,int step,int f){
if(step>minstep) return;
if(now_x == end_x && now_y == end_y){
minstep = step;
return;
}
for(int i = 0;i<4;i++){
int x = now_x + to[i][0];
int y = now_y + to[i][1];
if( ((x>-1) && (x<w+2) && (y>-1) && (y<h+2))
&&((board[y][x] == ' ' && mark[y][x] == false)||(x == end_x&&y==end_y))){
mark[y][x] = true;
if(f==i) Search(x,y,end_x,end_y,step,i);
else Search(x,y,end_x,end_y,step+1,i);
mark[y][x] = false; //回溯,该位置未曾走过
}
}
}
int main(){
int Boardnum = 0;
while(scanf("%d %d",&w,&h)){
if(w==0 && h == 0) break;
Boardnum++;
printf("Board #%d:\n",Boardnum);
int i,j;
for(i=0;i<MAXIN+2;i++){
board[0][i] = board[i][0] = ' ';
}
for(i=1;i <= h;i++){
getchar();
for(j=1;j<=w;j++) board[i][j] = getchar();
}
for(i=0;i<=w;i++)
board[h+1][i+1] = ' ';
for(i=0;i<=h;i++)
board[i+1][w+1] = ' ';
int begin_x,begin_y,end_x,end_y,count = 0;
while(scanf("%d %d %d %d",&begin_x,&begin_y,&end_x,&end_y)&&begin_x > 0 ){
count++;
minstep = 100000;
memset(mark,false,sizeof(mark));
Search(begin_x,begin_y,end_x,end_y,0,-1);
if(minstep<100000) printf("Pair %d: %d segments.\n",count,minstep);
else printf("Pair %d: impossible.\n",count);
}
printf("\n");
}
return 0;
}
有时我们获取到了页面需要在Java代码中进行解析,获取html中的数据,Jsoup是一个很方便的工具.一、什么是Jsoup? 官网网站:http://jsoup.org/ 可在官网下载对应的jar 通俗的将Jsoup就是一个解析网页的东西二、示例1.页面,通过查询获取到了一些数据:2.源码,这是_java取html的值
11、配置和使用HUE一、Demo:启动和使用HUE 1、启动:hadoop:start-all.sh hbase: start-hbase.sh hbase-daemon.sh start thrift hive: hive --service metastore_sasl maxbufsize
文章目录函数输出输入函数(cstdio/stdio.h)输出//输出单个字符(包括空格回车),返回输出的字符或EOF(操作失败,下同)int putchar(int ch);//把p所指向的字符串输出(截止至空字符‘\0’,用回车代替‘\0’,即自动换行),返回非负整数或EOFint puts(const char *p);//输出基本数据类型(截止于空格、回车、制表符Tab),返..._count和putchar
彩虹六号围攻怎么改区?想来很多朋友都还不是很清楚吧,所以呢小编今天给大家带来的就是彩虹六号围攻更换区域方法介绍了,需要的朋友不妨进来看看。彩虹六号围攻更换区域方法要手动选择资料中心地区:• 开启您的档案总管。• 前往:C:\Users\\Documents\My Games\Rainbow Six - Siege\是一组代表你的 Ubisoft 帐户的英数字组合长字串。像这样:如果你的电脑上有登入..._彩虹六号 eastasia改地区
ucosII文件概要_ucosii源代码
会场安排问题假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。) 对于给定的k个待安排的活动,计算使用最少会场的时间表。Input输入数据的第一行有1 个正整数k(k≤10000),表示有k个待安排的活动。接下来的k行中,每行有2个正整数,分别表示k个待安排的活动开始时间和结束时间。时间以0 点开始的分钟计。_贪心算法会场安排问题
设置Windows环境变量的方法设置Windows中的环境变量是为了某些命令在CMD中可以被识别以及用于多应用之间的交互。设置Windows环境变量的具体操作流程如图(请顺着图片用鼠标点击画红圈部分),下面以环境变量Path为例:..._环境变量设置
转载自:https://www.jianshu.com/p/5aea7cabc642亲,你平时有没有这样的感觉:看到朋友圈一篇好文就内心大喊“喔塞,写得好,今天学到了很多”看到一篇《××大全》长微博立刻收藏起来听到喜马拉雅一段音频课程,满耳的正能量……可是!回到现实中却是一个大写的“然并卵”。为什么会这样呢?一是因为我们每天身处海量的信息轰炸中(信息过载化),二是因为微信、微博、微..._输出式倒逼输入式成长
解析文件的引用:FFastXml存在于Runtime/XmlParser/Public/FastXml.h头文件中API Document中关于FFastXml的用法说的还是很清楚的,因此,本篇之简要说明一下基本使用规则:首先,你必须实现IFastXmlCallback接口,事实上,你的主要操作就在这个接口提供的5个接口函数中。基于此,继承IFastXmlCallback接口_ue解析xml报文
2021上学期博客目录初始mybatismybatis实现关联查询利用MyBatis实现CRUD操作Spring框架学习笔记01:初探Spring——采用Spring配置文件管理BeanSpring框架学习笔记02:初探Spring——利用组件注解符精简Spring配置文件Spring Boot基础学习笔记:可视化数据vue-cli介绍与安装vue-router(一vue-router基本使用)vue-router(二vue-router动态路由)vue-router
安装 Python3 :$ brew install python3可能会遇到的错误 :Error: An unexpected error occurred during the `brew link` stepThe formula built, but is not symlinked into /usr/localPermission denied @ dir_s_mkdir -...
== 关于move_base 导航核心包 ==wikipage: http://wiki.ros.org/move_base=== 我学这个包的时候,尽量总结wiki page上的内容如下:===move_base package 所属Stack: navigation关于这个包在 ROS Navigation 框架中的位置,参见:ROS探索总结(十三)——导航与定位框架开_ros2 movebase