中国海洋大学第四届朗讯杯高级组 A Rocky
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2718&cid=1203
题意:给你一个m乘n的格子阵,从一边进去,直线往前走,如果前边有石头就往右走,如果右边还有石头就往左走,如果左边还有石头就忘回走,会给你一个起始点的坐标,当然是在4条边上,但是不会在角上,问你在哪个格子走出去,且走了多少步。
思路:DFS。好吧,当时做的时候卡在这儿,一直没D出来。。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int map[maxn][maxn]; int step=,n,m;
void dfs(int x,int y,int flag)
{
if(flag == )//右
{
bool flag1 = false;
for(int i = x ; i <= n ; i++)
{
if(map[i][y])//一直走直到前边是石头为止
{
flag1 = true ;
step += (i-x-);//把前边走过的都加上但要减去当前占的这个格子,所以减1
if(!map[i-][y-])//如果右边没有石头向右转
{
dfs(i-,y,);//右的右边是下
break;//结束掉每一次的循环,因为有石头之后循环就不应该进行了
}
else if(map[i-][y-]&&!map[i-][y+])//向上
{
dfs(i-,y,);
break;
}
else if(map[i-][y-]&&map[i-][y+])//回去
{
dfs(i-,y,);
break;
}
}
}
if(!flag1)
{
step += (n-x);
printf("%d %d %d\n",n,y,step);
return;
}
}
else if(flag == )//上
{
bool flag2=false;
for(int i = y ; i <= m ; i++)
{
if(map[x][i])
{
flag2 = true ;
step += (i-y-) ;
if(!map[x+][i-])
{
dfs(x,i-,);
break;
}
else if(map[x+][i-]&&!map[x-][i-])
{
dfs(x,i-,);
break;
}
else if(map[x+][i-]&&map[x-][i-])
{
dfs(x,i-,);
break;
}
}
}
if(!flag2)
{
step += (m-y);
printf("%d %d %d\n",x,m,step);
}
}
else if(flag == )//左
{
bool flag3 = false;
for(int i = x ; i >= ; i--)
{
if(map[i][y])
{
flag3 = true ;
step += (x-i-);
if(!map[i+][y+])
{
dfs(i+,y,);
break;
}
else if(map[i+][y+]&&!map[i+][y-])
{
dfs(i+,y,);
break;
}
else if(map[i+][y+]&&map[i+][y-])
{
dfs(i+,y,);
break;
}
}
}
if(!flag3)
{
step += x-;
printf("%d %d %d\n",,y,step);
}
}
else if(flag == )//下
{
bool flag4 = false;
for(int i = y ; i >= ; i--)
{
if(map[x][i])
{
flag4 = true;
step += (y-i-);
if(!map[x-][i+])
{
dfs(x,i+,);
break;
}
else if(map[x-][i+]&&!map[x+][i+])
{
dfs(x,i+,);
break;
}
else if(map[x-][i+]&&map[x+][i+])
{
dfs(x,i+,);
break;
}
}
}
if(!flag4)
{
step += y-;
printf("%d %d %d\n",x,,step);
}
}
} int main()
{
int k,sx,sy;
int cnt = ;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
if(n==&&m==&&k==) break;
step = ;//初始格子算一步
memset(map,,sizeof(map));
for(int i = ; i < k ; i++)
{
int x,y;
scanf("%d%d",&x,&y);
map[x][y] = ;//将这些点标记为1代表不能走
}
int flag;
scanf("%d %d",&sx,&sy);
if(sx == ) flag = ;//右
else if(sy == ) flag = ;//上
else if(sy == m) flag = ;//下
else if(sx == n) flag = ;//左
printf("Case %d: ",cnt);
cnt++;
dfs(sx,sy,flag);
}
return ;
}
中国海洋大学第四届朗讯杯高级组 A Rocky的更多相关文章
- 中国海洋大学第四届朗讯杯高级组 I Cuckoo for Hashing
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2719&cid=1203 题意 :意思就是哈希来的,具体大意就是说有两个哈希表,然后有这样 ...
- 中国海洋大学第四届朗讯杯高级组 Cash Cow(模拟)
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2721 题意: 给定n个左标,跟那n个坐标 ...
- 中国海洋大学第四届朗讯杯高级组 A 2718 Rocky(模拟)
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2718 题意:优先直走,右 左 后.... ...
- 腾讯云 安全组配置及与MySQL 远程登录失败原因浅析
前言,知道自己腾讯云服务器安全组配置并在安全组里开放了所有端口的用户可以粗略的看看下边的内容,否则就仔细看看吧. 因为有学习及业务需要,我要在腾讯云上安装了CentOS7.2版本的服务器上安装MySQ ...
- 第四届蓝桥杯C++B组省赛
1.高斯日记 2.马虎的算式 3.第39级台阶 4.黄金连分数 5.前缀判断 6.三部排序 7.错误票据 8.翻硬币 9.带分数 10.连号区间数
- 第四届蓝桥杯C++B组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的 ...
- CF 3-6 2级组 D题 STRESSFUL TRAINING 紧张的比赛
题目大概是这样的: 给出一个数列a[n] ,对于每一个数 a [i] 来说 都会在 T - - 时 -= b[i] 每个数都在任何时刻不能小于0 你可以在每次T - - 之前时给 一 个 a[i] + ...
- [2020年10月28日普级组]1405.小B浇花
区 间 和 的 和 区间和的和 区间和的和 题目解析 就直接模拟,从最低的花的高度向最高的花的高度枚举,如果当循环变量的值到达了顶峰,但还有花的数量大于2的,就把循环上线加一(所以数组要开大些) Co ...
- [2020年10月28日普级组]1406.SMRTFUN
S M R T F U N SMRTFUN SMRTFUN 题目描述 "又肥又温顺,又大又笨,他们看起来那么傻,而且也不有趣--" 这些牛想要证明,他们是既有趣,又聪明的.为了这样 ...
随机推荐
- JDBC的几个步骤
JDBC:JAVA访问数据库的解决方案.几个步骤:1.加载驱动类; 2.与数据库建立连接: 3.执行SQL语句 4.处理结果集 5.关闭连接1. 第一步:加载驱动类: 需要注意:不 ...
- GlusterFS集群文件系统概述
http://blog.csdn.net/zonelan/article/details/8468383 1. GlusterFS概述 GlusterFS是Scale-Out存储解决方案Gl ...
- 标签的innerHTML属性和html()
在新公司开发编码的时候,经常写js代码:有时候就需要往某个标签里添加一些html脚本或者要拿到某个标签里的html脚本,那么就会用到innerHTML和html. 1.innerHTML属性 w3sc ...
- MongoDB的主从复制和副本集
mongoDB的两个特性主从复制和副本集,实现了数据的同步备份 一.主从复制 主从复制是一个简单的数据库同步备份的集群技术.例如主服务器宕机了,可以直接使用从服务器,主服务器恢复后在进行同步,保证了业 ...
- python出现Non-ASCII character '\xe7' in file ex6.py on line 1, but no encoding declare错误
http://www.cnblogs.com/qi09/archive/2012/02/06/2340712.html python中出现Non-ASCII character '\xe7' in f ...
- ###《More Effective C++》- 异常
More Effective C++ #@author: gr #@date: 2015-05-24 #@email: forgerui@gmail.com 九.利用destructors避免泄漏资源 ...
- asp:时间的显示
DateTime dt = DateTime.Now;// Label1.Text = dt.ToString();//2005-11-5 13:21:25// Label2.Text = ...
- 准备Activiti的开发环境
1.创建项目
- ZOJ 2411 Link Link Look(BFS)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1411 题目大意:连连看,给出每次连线的两个坐标,求能消去多少方块,拐 ...
- STL 常见容器
vector: 是一种在结尾处高效插入.删除的容器,本质上是一个动态数组,可以自动维护数组的空间分配.它也允许在开头和中间插入.删除数据,但是效率极低. <span style="fo ...