首页 > 代码库 > 蓝桥杯 基础练习 BASIC-25 回形取数
蓝桥杯 基础练习 BASIC-25 回形取数
基础练习 回形取数
时间限制:1.0s 内存限制:512.0MB
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
样例输出
1 4 7 8 9 6 3 2 5
样例输入
3 2
1 2
3 4
5 6
1 2
3 4
5 6
样例输出
1 3 5 6 4 2
题目解析:
每次从矩阵的第一个数的位置按照逆时针方向取数到第一行第二个数结束。然后缩小矩阵行列范围,形成子矩阵,继续循环。
示例代码:
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 public class Main { 6 public static void main(String[] args) throws IOException { 7 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 String[] str = br.readLine().split(" "); 9 int n = Integer.parseInt(str[0]); 10 int m = Integer.parseInt(str[1]); 11 12 int[][] num = new int[n][m]; 13 for(int i = 0; i < n; i++){ 14 String[] t = br.readLine().split(" "); 15 for(int j = 0; j < m; j++){ 16 num[i][j] = Integer.parseInt(t[j]); 17 } 18 } 19 20 int[] memory = new int[n*m]; //存储每一步取到的数 21 loopGetNum(n,m,num,memory); 22 23 for(int i = 0; i < memory.length; i++){ 24 System.out.print(memory[i]+" "); 25 } 26 27 } 28 29 private static void loopGetNum(int n, int m, int[][] num, int[] memory) { 30 int row = 0; //行 31 int col = 0; //列 32 int cirNum = 0; //圈数 33 int total = n * m; //总的执行次数,即数字的总个数 34 35 for(int i = 0; i < total; i++){ 36 if(row < n && col == cirNum){ //第一列 37 memory[i] = num[row][col]; 38 row++; 39 }else if(row == n && col < m-1){ //最后一行 40 col++; 41 memory[i] = num[row-1][col]; 42 }else if(row-1 > cirNum && col == m-1){ //最后一列 43 row--; 44 memory[i] = num[row-1][col]; 45 }else if(row-1 == cirNum && col > cirNum){ //第一行 46 col--; 47 memory[i] = num[row-1][col]; 48 if(row-1 == cirNum && col == cirNum+1){ //若到第一行第二个数字,则缩小矩阵行列范围,形成子矩阵 49 cirNum++; 50 n = n-1; 51 m = m-1; 52 row = cirNum; 53 col = cirNum; 54 } 55 56 } 57 } 58 } 59 }
蓝桥杯 基础练习 BASIC-25 回形取数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。