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

矩阵排列输入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

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

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;
		//列,从0行开始如果是宽度为6,m为10,取摩m%w=4

		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);
		
	}
}


你可能感兴趣的:(蓝桥杯)