【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个换行}}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值