• 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));
        }
    
    }
  • 相关阅读:
    lhgdialogv3.13 使用点滴
    CheckBoxList 取值 及选中相关用法
    repeater 及 gridview 中绑定短日期
    数据库中日期大小的判断
    父子不同窗口间刷新传值
    子级Repeater获取父级Repeater绑定项的值
    vs.net 2010 web 项目中使用 webservice
    web打印实现方案 Lodop6.034 使用方法总结
    用 showModalDialog 方法回传数据到父页中去
    vs.net2010中使用 Ajax Control Toolkit
  • 原文地址:https://www.cnblogs.com/dgwblog/p/10128814.html
Copyright © 2020-2023  润新知