900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > X星球居民小区的楼房全是一样的...

X星球居民小区的楼房全是一样的...

时间:2019-10-22 10:05:36

相关推荐

X星球居民小区的楼房全是一样的...

每周一题之3

[问题描述]

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范围内

要求输出一个整数,表示m n 两楼间最短移动距离。

[样例输入]

6 8 2

[样例输出]

4

[样例输入]

4 7 20

[样例输出]

5

*/

解法: 根据题目要求,首先想到的就是打表

package december.year18;import java.util.Scanner;public class Solution4 {public static void main(String[] args) {Scanner input =new Scanner(System.in);int w=input.nextInt();int m=input.nextInt();int n=input.nextInt();int [][] maps=new int[10001][w];for (int i = 0; i < w; i++) {maps[0][i]=i+1;}int maxn=Math.max(m, n);int len=maxn/w+1;System.out.println(len);int temp=0;for (int i = 0; i <len ; i++) {if(i%2==0) {int bei=(i+2)*w;for (int j = 0; j <w ; j++) {maps[i+1][j]=bei-j;}temp=bei;}else {for (int j = 0; j <w ; j++) {maps[i+1][j]=temp+j+1;}}}int x1 = 0,y1 = 0,x2 = 0,y2 = 0;for (int i = 0; i < len; i++) {for (int j = 0; j < w; j++) {if(maps[i][j]==n) {x1=i;y1=j;}else if(maps[i][j]==m) {x2=i;y2=j;}}}System.out.println(Math.abs((x2-x1)+y2-y1));}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。