【java】蛇形填数 螺旋填数

在m*n的方阵里填成蛇形,例如:    


原理:创建一个二维数组,将数组清零,用a[i][j]==0判断该位置是否已填数,用x,y记录下一个数的坐标,t记录填入的数字。

4 5
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7

12 11 10 9 8

实现代码如下

import java.util.Scanner;

public class ScrewNumber {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			Scanner in=new Scanner(System.in);
			int m=in.nextInt();//设置行数
			int n=in.nextInt();//设置列数
			int [][] arr=new int [m][n];//创建一个m行n列的二维数组
			for(int i=0;i<arr.length;i++)//给数组中的元素赋予初值0,以便判断是否能够传值
				for(int j=0;j<arr[i].length;j++)
					arr[i][j]=0;
			int x=0;
                                //设置下标表示列
int y=0;//设置下标表示列int t=1;//设置传入的初值为1;arr[x][y]=t;while(t<m*n) {while(y+1<n&&arr[x][y+1]==0) {//表示向右传值arr[x][++y]=++t;}while(x+1<m && arr[x+1][y]==0) {//表示向下传值arr[++x][y]=++t;}while(y-1>=0&&arr[x][y-1]==0) {//表示向左传值arr[x][--y]=++t;}while(x-1>=0&&arr[x-1][y]==0) {//表示向上传值arr[--x][y]=++t;}}for(int i=0;i<m;i++) {for(int j=0;j<n;j++) {//遍历数组System.out.print(arr[i][j]+"\t");}System.out.println();//每n个换行}}}

猜你喜欢

转载自blog.csdn.net/thebearintarena/article/details/81006413