博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蛇形矩阵
阅读量:6069 次
发布时间:2019-06-20

本文共 922 字,大约阅读时间需要 3 分钟。

在m*n方阵中依次填入1,2,3,。。。,m*n,要填成蛇形。如n=4,m=3时候如下:

1   2   3   4

10 11 12 5

9   8  7  6

 

我的代码如下: 

package ch02;

import java.util.Scanner;
public class SnakeMatrix { public static void main(String[] args){
int i = 0;
int m = 0;
int n = 0;
int[] a = new int[2];
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
a[i++] = sc.nextInt();
if(i==2){
m = a[0];
n = a[1];
int b[][] = new int[m][n];
int x = 0,y = 0;
int tips = 1;
b[0][0] = 1;
while(tips<m*n){
//判断下一步是否越界,并且判断下一步是否已经填满
while(x+1 < n&&b[y][x+1] == 0){
b[y][++x] = ++tips;
}
while(y+1 < m&&b[y+1][x] == 0){
b[++y][x] = ++tips;
}
while(x-1 >= 0&&b[y][x-1] == 0 ){
b[y][--x] = ++tips;
} while( y-1 >= 0&&b[y-1][x] == 0 ){
b[--y][x] = ++tips;
}
}
for(int s = 0;s < m ;s++){
for(int t = 0;t < n;t++){
System.out.print(b[s][t]+" ");
}
System.out.println(" ");
}
}
}
}
}

该算法的关键在于要先判断下个数是否越界,然后是否已经被填,最后才去填数据。还有就是要把第一个要填的数据初始化。

 

转载于:https://www.cnblogs.com/dongqiSilent/p/3420322.html

你可能感兴趣的文章
Chapter 4 Invitations——15
查看>>
Spring Boot 2.0 Release Notes
查看>>
谈一谈python的垃圾回收机制
查看>>
windows上使用的免费连接linux终端xshell6,xftp6下载
查看>>
LeetCode 总结
查看>>
在Linux 中安装不了程序?教你一招解决!
查看>>
取得汉字拼音首字母的绝妙方法
查看>>
不再以讹传讹 剖析720P 1080i和1080P
查看>>
asp.net服务器控件button先执行js再执行后台的方法
查看>>
Eclipse上GIT插件EGIT使用手册
查看>>
用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
查看>>
[转]delphi 有授权许可的字符串拷贝函数源码
查看>>
C#正则表达式提取HTML中IMG标签的SRC地址
查看>>
DockPanel的使用
查看>>
HDU 4118 Holiday's Accommodation (树形DP 哎,头脑不清晰,没看懂。。。。)
查看>>
HDU 4638 Group (线段树 | 树状数组 + 离线处理)
查看>>
最佳的线程联网类
查看>>
JQuery 给基本控件的取值,赋值
查看>>
CVPapers论文整理工具-开源
查看>>
使用字符串时要注意...
查看>>