X星球居民小区的楼房全是一样的...
生活随笔
收集整理的這篇文章主要介紹了
X星球居民小区的楼房全是一样的...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
每周一題之3?
?
[問題描述]
?X星球居民小區(qū)的樓房全是一樣的,并且按矩陣樣式排列。其樓房的編號為1,2,3...
?當(dāng)排滿一行時(shí),從下一行相鄰的樓往反方向排號。
?比如:當(dāng)小區(qū)排號寬度為6時(shí),開始情形如下:
?
?1? 2? 3? 4? 5? 6
?12 11 10 9? 8? 7
?13 14 15 .....
?
?我們的問題是:已知了兩個(gè)樓號m和n,需要求出它們之間的最短移動距離(不能斜線方向移動)
?輸入為3個(gè)整數(shù)w m n,空格分開,都在1到10000范圍內(nèi)
?要求輸出一個(gè)整數(shù),表示m n 兩樓間最短移動距離。
?
?[樣例輸入]
?6 8 2
?[樣例輸出]
?4
?
?[樣例輸入]
?4 7 20
?[樣例輸出]
?5
?*/
?解法: 根據(jù)題目要求,首先想到的就是打表
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));}}?
轉(zhuǎn)載于:https://www.cnblogs.com/dgwblog/p/10128814.html
總結(jié)
以上是生活随笔為你收集整理的X星球居民小区的楼房全是一样的...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。