FOJ 1205
Problem 1205 小鼠迷宫问题
Accept: 522 Submit: 1679 Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
问题描述 小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。
小鼠的迷宫
编程任务
对于给定的小鼠的迷宫,编程计算小鼠a通向小鼠b的所有最短道路。
Input
结果输出
Output
Sample Input
Sample Output
Source
FJOI2005
#include<stdio.h>
#include<string.h>
int sx[]={,,,-};
int sy[]={,,-,};
int map[][];
int mark[][];
int n,m;
int x1,y1,x2,y2;
int min_step,sum_min;
int que[][];
int que_step[];
void bfs(int h,int l)
{ int front,rear;
front=rear=;
que[rear][]=h;
que[rear][]=l;
rear++;
map[h][l]=;
que_step[front]=;
int xx,yy,i; while(front<rear)
{
for(i=;i<;i++)
{
xx=que[front][]+sx[i];
yy=que[front][]+sy[i]; if(xx==x2&&yy==y2)
{
min_step=que_step[front]+;
return;
}
if(map[xx][yy]==&&xx<=n&&xx>=&&yy>=&&yy<=m)
{
//printf("(%d %d) step=%d\n",xx,yy,que_step[front]+1);
que[rear][]=xx;
que[rear][]=yy;
que_step[rear]=que_step[front]+;
rear++;
map[xx][yy]=; }
}
front++;
}
}
int t;
void dfs(int x,int y,int c_step)
{
//printf("%d\n",c_step);
if(x==x2&&y==y2&&c_step==min_step)
{ sum_min++; return ;
}
if((x>x2?x-x2:x2-x)+(y>y2?y-y2:y2-y)+c_step>min_step) return ;
int i;
for(i=;i<;i++)
{
int xx,yy;
xx=x+sx[i];
yy=y+sy[i];
if(xx>=&&xx<=n&&yy>=&&yy<=m&&mark[xx][yy]==)
{
mark[xx][yy]=;
dfs(xx,yy,c_step+);
mark[xx][yy]=;
}
} }
int main()
{
int k,i,j;
while(scanf("%d %d %d",&n,&m,&k)!=EOF)
{
min_step=-;sum_min=;
for(i=;i<=n;i++)
{
memset(map[i],,sizeof(map[i]));
memset(mark[i],,sizeof(mark[i]));
}
for(i=;i<=k;i++)
{
int a,b;
scanf("%d %d",&a,&b);
map[a][b]=;
mark[a][b]=;
}
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
t=;
bfs(x1,y1); if(min_step==-)
printf("No Solution!\n");
else
{
dfs(x1,y1,);
printf("%d\n%d\n",min_step,sum_min);
}
}
return ;
} /* 3 3 1
2 2
1 1
3 3 */
FOJ 1205的更多相关文章
- Caused by: java.sql.BatchUpdateException: Transaction error, need to rollback. errno:1205 Lock wait timeout exceeded; try restarting transaction
更新的时候报 Caused by: java.sql.BatchUpdateException: Transaction error, need to rollback. errno:1205 Loc ...
- Mysql Error:1205错误诊断
前两天遇到一个1205(ER_LOCK_WAIT_TIMEOUT)的错误,弄了半天终于找到原因,掌握原理+细心才能找到罪归祸首.下面我给大家分享下这个问题的分析处理过程,希望对大家有所帮助.接到sla ...
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- Problem 2020 组合(FOJ)
Problem 2020 组合 Accept: 714 Submit: 1724Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- magento后台登陆被锁定 索引报错的解决:General error: 1205 Lock wait timeout
1. magento在索引的时候用shell,有时候会报错: General error: 1205 Lock wait timeout exceeded 这个时候,是因为行锁的原因,在表中您直接用s ...
- wikioi 1205 单词倒排
/*====================================================================== 1205 单词翻转 题目描述 Description ...
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
测试库一条update语句报错:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction mysql> ...
- 九度OJ 1205 N阶楼梯上楼问题 -- 动态规划(递推求解)
题目地址:http://ac.jobdu.com/problem.php?pid=1205 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括 ...
- hdu 1205
#include <stdio.h> int a[1005000]; int main() { int t; scanf("%d",&t); while(t-- ...
随机推荐
- 12.C#yield return和yield break及实际应用小例(六章6.2-6.4)
晚上好,各位.今天结合书中所讲和MSDN所查,聊下yield关键字,它是我们简化迭代器的关键. 如果你在语句中使用了yield关键字,则意味着它在其中出现的方法.运算符或get访问器是迭代器,通过使用 ...
- DOM(四)事件流
1.冒泡型事件 浏览器的事件模型分两种:捕获型事件和冒泡型事件.由于ie不支持捕获型事件,所以以下主要以冒泡型事件作为讲解.(dubbed bubbling)冒泡型指事件安装最特定的事件到最不特定的事 ...
- 使用DOM动态创建标签
本文是参考<javascript Dom 编程艺术>第八章的内容所写,用到的知识点,就是关于创建平稳的web页面. 使用DOM方法: getElementById() getElement ...
- 在CentOS7上安装RabbitMQ
安装过程参考官网: Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) 首先需要安装erlang,参考:http://fedo ...
- Java设计模式-状态模式(State)
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线.隐身.忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1.可以通过改变状 ...
- linux中防CC攻击两种实现方法(转)
CC攻击就是说攻击者利用服务器或代理服务器指向被攻击的主机,然后模仿DDOS,和伪装方法网站,这种CC主要是用来攻击页面的,导致系统性能用完而主机挂掉了,下面我们来看linux中防CC攻击方法. 什么 ...
- 怎样分析java线程堆栈日志
注: 该文章的原文是由 Tae Jin Gu 编写,原文地址为 How to Analyze Java Thread Dumps 当有障碍,或者是一个基于 JAVA 的 WEB 应用运行的比预期慢的时 ...
- tomcat管理员配置
纸上得来终觉浅,绝知此事要躬行 博客园 首页 新闻 新随笔 联系 管理 随笔- 458 文章- 0 评论- 38 Tomcat的Manager显示403 Access Denied 管理to ...
- yii框架常用url地址
调用YII框架中 jquery:Yii::app()->clientScript->registerCoreScript('jquery'); framework/web/j ...
- 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样)
1.新建一个继承自UITableViewCell的子类 2. 在initWithStyle:方法中进行子控件的初始化 1> 将有可能显示的所有子控件都添加到contentView中 2> ...