第十个点java超时怎么办
  • 板块P5461 赦免战俘
  • 楼主Ran_r
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/18 16:01
  • 上次更新2023/10/23 21:14:47
查看原帖
第十个点java超时怎么办
728075
Ran_r楼主2023/3/18 16:01

第十个点TLE了,就正常使用递归

import java.util.*;
public class Main {

	static public int [][]arr;
	public static void go_away(int length, int begin_x, int begin_y) {
		//递归最小出口(2*2的矩阵)
		if(length == 2) {
			arr[begin_x][begin_y]--;
		}
		//递归
		else {
			//赦免左上角
			for(int j = 0; j< length/2; j++) {
				for(int n = 0; n< length/2; n++) {
					arr[begin_x+j][begin_y+n]--;
				}
			}
			go_away(length/2,begin_x+length/2,begin_y);//右上角
			go_away(length/2,begin_x+length/2,begin_y+length/2);//右下角
			go_away(length/2,begin_x,begin_y+length/2);//左下角
		}
	}

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int m = (int)Math.pow(2, n);
		arr = new int[m][m];
		//调用递归函数
		go_away(m, 0, 0);
		//输出结果
		for(int i = 0; i < m; i ++) {
			for(int j = 0; j < m; j ++) {
				System.out.print(++arr[i][j]+" ");
			}
			System.out.println();
		}
	}

}

2023/3/18 16:01
加载中...