【蓝桥杯】【基础】【Java】回形取数(超时)

在这里插入图片描述

下面是我手写的解题思路.

(本来字就丑的我更加卑微。)但是我jio得很清晰了,起码我懂了。
在这里插入图片描述
这种解题是超时的,目前还没有更好的办法。我搜索了别人的代码也貌似没有好的解决方案,那就先历史遗留吧。

源码

package 回形取数;

import java.util.Scanner;

public class Main_超时 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		//m行 n列
		int m = scanner.nextInt();
		int n = scanner.nextInt();
		int[][] a = new int[200][200];
		int total = m*n;
		
		for(int i = 0; i < m; i++){
			for(int j = 0; j < n; j++){
				a[i][j] = scanner.nextInt();
			}
		}
		int i = 0;
		int j = 0;
		while(total > 0){
			while( i < m && a[i][j] != -1){//down
				System.out.print(a[i][j]+" ");
				a[i][j] = -1;
				i++;
				total--;
			}
			i--;  //i会在赋值为-1后再多加一次。
			j++;
			while( j < n && a[i][j] != -1){//right
				System.out.print(a[i][j]+" ");
				a[i][j] = -1;
				j++;
				total--;
			}
			j--;
			i--;
			while( i >=0  && a[i][j] != -1){//up
				System.out.print(a[i][j]+" ");
				a[i][j] = -1;
				i--;
				total--;
			}
			i++;
			j--;
			while( j >=0  && a[i][j] != -1){//left
				System.out.print(a[i][j]+" ");
				a[i][j] = -1;
				j--;
				total--;
			}
			j++;
			i++;
		}
	
	}
	
	
	
}

发布了81 篇原创文章 · 获赞 13 · 访问量 2401

猜你喜欢

转载自blog.csdn.net/alovelypeach/article/details/104021797
今日推荐