1. 程式人生 > >南陽理工ACM 題目33 蛇形填數

南陽理工ACM 題目33 蛇形填數

蛇形填數

時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3      描述 在n*n方陳裡填入1,2,...,n*n,要求填成蛇形。例如n=4時方陳為:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
     輸入
直接輸入方陳的維數,即n的值。(n<=100)
     輸出
輸出結果是蛇形方陣。
     樣例輸入
     3      樣例輸出      7    8    1
     6    9    2
     5    4    3
 
import java.io.*;
import java.util.*;

public class Main {
	
	public static void main(String[] args) {
				Scanner cin = new Scanner(new BufferedInputStream(System.in));
				int arr[][];
					int n = cin.nextInt();
					int i = -1;
					int j = n-1;
					int temp = 0;
					arr = new int[n][n];
					while(temp<n*n){
					while(i<n-1&&arr[i+1][j]==0){
						arr[++i][j] = ++temp;
					}
					while(j>0&&arr[i][j-1]==0){
						arr[i][--j] = ++temp;
					}
					while(i>0&&arr[i-1][j]==0){
						arr[--i][j] = ++temp;
						}
					while(j<n-1&&arr[i][j+1]==0){
						arr[i][++j] = ++temp;
					}

					}
					for(int x=0;x<n;x++){
						for(int y=0;y<n;y++)
							System.out.print(arr[x][y]+" ");
						System.out.println("");
					}
					
				}
	}