您的位置:首页 > 编程语言 > Java开发

2015 第六届 蓝桥杯 Java C组 第8题 矩阵排列

2015-04-11 16:21 375 查看
矩阵排列输入w m n ,w为宽度如宽度为6

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 16 17 18

24 23 22 21 20 19..........这样排,

输出m 到n的最短路径

如样式输入:6 10 20

输出 4

输入4 7 14

则输出 3

范围1<w,m,n<10000

解题思路:直接算出数的位置,算出位置的行列坐标差

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w=sc.nextInt();
int m=sc.nextInt();
int n=sc.nextInt();
//行,从0行开始如果是宽度为6,m为4,取摩m%w=4   6-4=2   2/6=0表示第0行 如果是8就是 8%6=2   8-2=6  6/6=1表示第一行

int a=(m-m%w)/w;
int A=(n-n%w)/w;
//列,<span style="font-family: Arial, Helvetica, sans-serif;">从0行开始如果是宽度为6,m为10,取摩m%w=4</span>

int b=m%w;
if(a%2!=0)//偶数行则翻转
b=Math.abs(b-w)+1;

int B=n%w;
if(A%2!=0)
B=Math.abs(B-w)+1;

int sum = Math.abs(a-A)+Math.abs(b-B);
System.out.println(sum);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: