蓝桥杯 移动距离 (打表)
2016-03-13 21:02
246 查看
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
输入为3个整数w m n,空格分开,都在1到10000范围内
w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n两楼间最短移动距离。
例如:
用户输入:
6 8 2
则,程序应该输出:
4
再例如:
用户输入:
4 7 20
则,程序应该输出:
5
资源约定:
峰值内存消耗 <256M
CPU消耗 < 1ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
思路:对每个数字的所在行的行坐标进行奇偶性判断,得出列坐标,最后用两点坐标差求距离。
ans用点的坐标来求相对简单...
那么我们对每个点对应的坐标记录下来即可...
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
输入为3个整数w m n,空格分开,都在1到10000范围内
w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n两楼间最短移动距离。
例如:
用户输入:
6 8 2
则,程序应该输出:
4
再例如:
用户输入:
4 7 20
则,程序应该输出:
5
资源约定:
峰值内存消耗 <256M
CPU消耗 < 1ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
思路:对每个数字的所在行的行坐标进行奇偶性判断,得出列坐标,最后用两点坐标差求距离。
ans用点的坐标来求相对简单...
那么我们对每个点对应的坐标记录下来即可...
#include<iostream> #include<algorithm> using namespace std; const int N = 10000+10; int abs(int num) { if(num<0) num=-num; return num; } struct node { int x,y; }a ; int main() { int w,n,m,i,j; while(cin>>w>>n>>m) { for(i=1;i<=w;i++) { for(j=1;;j=j+2) { int t=i+(j-1)*w; if(t>max(n,m)) break; a[t].x=j;a[t].y=i; } } for(i=w+1;i<=w+w;i++) { for(j=2;;j=j+2) { int t=i+(j-2)*w; if(t>max(n,m)) break; a[t].x=j;a[t].y=w+w-i+1; } } cout<<abs(a .x-a[m].x)+abs(a .y-a[m].y)<<endl; } return 0; }
相关文章推荐
- HDU 2121 Ice_cream’s world II(最小树形图)
- 机器人的环境感知与智主行走之工程化实现
- docker 一些命令 记录一
- 学习进度条
- 《C和指针》读书笔记
- MySQL-基本sql命令
- 用官方2012版本131兆,一共有四个自带软件
- 基数排序
- pku1085 Triangle War 完全极大极小搜索+状压DP
- 不用加减乘除做加法
- Linux下Nagios的安装与配置
- ContentResolver的四个常用方法:delete().query(),update(),insert()
- 克隆系统后LINUX如何设置网卡
- TCP的拥塞控制
- AngularJS clone directive 指令复制
- C语言详解 - 枚举类型
- Andrew Ng 机器学习笔记(六)
- 用VMware克隆CentOS 6.4后网卡不能使用处理方法
- leetcode:Climbing Stairs 【Java】
- 作业