TYVJ P1074 武士风度的牛 Label:跳马问题
背景
描述
这里有一个地图的例子:
11 | . . . . . . . . . .
10 | . . . . * . . . . .
9 | . . . . . . . . . .
8 | . . . * . * . . . .
7 | . . . . . . . * . .
6 | . . * . . * . . . H
5 | * . . . . . . . . .
4 | . . . * . . . * . .
3 | . K . . . . . . . .
2 | . . . * . . . . . *
1 | . . * . . . . * . .
0 ----------------------
1
0 1 2 3 4 5 6 7 8 9 0
The Knight 可以按照下图中的A,B,C,D...这条路径用5次跳到草的地方(有可能其它路线的长度也是5):
11 | . . . . . . . . . .
10 | . . . . * . . . . .
9 | . . . . . . . . . .
8 | . . . * . * . . . .
7 | . . . . . . . * . .
6 | . . * . . * . . . F<
5 | * . B . . . . . . .
4 | . . . * C . . * E .
3 | .>A . . . . D . . .
2 | . . . * . . . . . *
1 | . . * . . . . * . .
0 ----------------------
1
0 1 2 3 4 5 6 7 8 9 0
输入格式
第二行..结尾: 如题目描述的图。
输出格式
测试样例1
输入
10 11
..........
....*.....
..........
...*.*....
.......*..
..*..*...H
*.........
...*...*..
.K........
...*.....*
..*....*..
输出
5
备注
代码
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std; struct cc{
int x,y;
}que1; char juzhen[][];
int x,y,n,m,ans,
dx[]={,,-,-,,,-,-},
dy[]={,-,,-,,-,,-},
map[][];
queue<cc> que; void print(){
for(int i=;i<=m;i++) {
for(int j=;j<=n;j++){
printf("%d",map[i][j]);
}
puts("");
}
puts("");
} int main(){
// freopen("01.txt","r",stdin);
scanf("%d%d",&n,&m);//横n 竖m
for(int i=;i<=m;i++) {
for(int j=;j<=n;j++){
cin>>juzhen[i][j];
// scanf("%c",juzhen[i][j]);
if(juzhen[i][j]=='K') {x=i;y=j;}
}
} // print();
cc c1;c1.x=x;c1.y=y;
que.push(c1);
map[x][y]=;
while(!que.empty()){
que1=que.front();que.pop();
for(int i=;i<;i++){
int xx=que1.x+dx[i],yy=que1.y+dy[i];
if(xx<||yy<||xx>m||yy>n) continue;
if(map[xx][yy]>) continue;
if(juzhen[xx][yy]=='*') continue;
if(juzhen[xx][yy]=='H'){
ans=map[que1.x][que1.y];
// cout<<xx<<' '<<yy<<endl;
while(!que.empty()) que.pop();
break;
}
map[xx][yy]=map[que1.x][que1.y]+;
cc que2;que2.x=xx;que2.y=yy;
que.push(que2);
}
// print(); }
printf("%d\n",ans);
return ;
}测试代码没删掉,勿喷
n和m老是搞反,很不爽
还有就是37行求‘K’坐标没加括号,导致y永远不对
另外这样输入只能一整行或字符串地读,或者用cin
为了方便取‘K’我用的是cin
TYVJ P1074 武士风度的牛 Label:跳马问题的更多相关文章
- TYVJ 1074 武士风度的牛
easy BFS 注意输入是反的就OK了 #include <cstdio> #include <iostream> #include <queue> using ...
- TYVJ P1030 乳草的入侵 Label:跳马问题
背景 USACO OCT09 6TH 描述 Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份佔领了一 ...
- CH2906 武士风度的牛(算竞进阶习题)
水..... 直接bfs... #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; typedef l ...
- 带你学习Flood Fill算法与最短路模型
一.Flood Fill(连通块问题) 0.简介 Flood Fill(洪水覆盖) 可以在线性的时间复杂内,找到某个点所在的连通块! 注:基于宽搜的思想,深搜也可以做但可能会爆栈 flood fill ...
- AcWing 【算法提高课】笔记02——搜索
搜索进阶 22.4.14 (PS:还有 字串变换 A*两题 生日蛋糕 回转游戏 没做) 感觉暂时用不上 BFS 1. Flood Fill 在线性时间复杂度内,找到某个点所在的连通块 思路 统计连通块 ...
- 洛谷 P2737 [USACO4.1]麦香牛块Beef McNuggets Label:一点点数论 && 背包
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- TYVJ P1015 公路乘车 &&洛谷 P1192 台阶问题 Label:dp
题目描述 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式. 输入输出格式 输入格式: 输入文件的仅包含两个正整数N,K. 输出格式: 输入文件s ...
- TYVJ P1032 零用钱 Label:贪心
背景 USACO OCT09 7TH 描述 作為创造產奶纪录的回报,Farmer John决定开始每个星期给Bessie一点零花钱. FJ有一些硬币,一共有N (1 <= N <= 20) ...
- TYVJ P1075 硬币游戏 Label:dp
背景 农民John的牛喜欢玩硬币,所以John就为它们发明了一个新的两人硬币游戏,叫做Xoinc. 描述 最初地面上有一堆n个硬币(5<=n<=2000),从上面数第i个硬币的价值为C_i ...
随机推荐
- OpenCV的基本数据结构
参考:http://www.cnblogs.com/guoqiaojin/p/3176692.html
- PHP随笔
php(PHP开发) PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,易于学习,使用广泛 ...
- jQuery 效果函数
jQuery 效果函数 方法 描述 animate() 对被选元素应用“自定义”的动画 clearQueue() 对被选元素移除所有排队的函数(仍未运行的) delay() 对被选元素的所有排队函数( ...
- 《ASP.NET1200例》统计网站访问量源代码
void Application_Start(object sender, EventArgs e) { //在应用程序启动时运行的代码 int count=0; ...
- Unique Binary Search Trees I & II
Given n, how many structurally unique BSTs (binary search trees) that store values 1...n? Example Gi ...
- tcp ip detatils
tcp ip detatils 8.关于TCP协议,下面哪种说法是错误的()A.TCP关闭连接过程中,两端的socket都会经过TIME_WAIT状态B.对一个Established状态的TCP连接, ...
- OC内存管理--zombie对象
当我们对于内存进行手动管理的时候,会出现两种错误:一种是野指针错误,一种则为内存泄露.这两点也是我们去管理内存时最终要解决的问题. 内存泄漏是指:不在使用的对象,一直保留在内存中未被销毁,一直占有着内 ...
- ubuntu使用root账户登录
1.先设定一个root的密码 sudo passwd root 2.编辑lightdm.conf sudo gedit /etc/lightdm/lightdm.conf 最后一行添加 greeter ...
- Android-- FragmentStatePagerAdapter分页(转载)
转载地址:http://blog.csdn.net/dreamzml/article/details/9951577 ViewPager ViewPager 如其名所述,是负责翻页的一个 View.准 ...
- java 学习之路
一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://i ...