任意矩形填充蛇形数字
2014-12-23 22:06
281 查看
蛇形数字就是在一个数组中将数字填成这样 7 8 1 6 9 2 5 4 3 代码如下 public class 蛇形矩阵 { public static void main(String[] args){ int ROW=7; int COLUMN=8; int[][] snake=new int[ROW][COLUMN]; full(snake); print(snake); } public static void full(int[][] snake){ int ROW=snake.length; int COLUMN=snake[0].length; int count=0; int bx=COLUMN-1,by=0; snake[by][bx]=++count; int[] X={0,-1,0,1}; int[] Y={1,0,-1,0}; while(true){ for(int i=0;i<4;i++){ if(0<=bx+X[i] && 0<=by+Y[i] && bx+X[i]<COLUMN && by+Y[i]<ROW && snake[by+Y[i]][bx+X[i]]==0) while(true){ bx+=X[i]; by+=Y[i]; snake[by][bx]=++count; if(!(0<=bx+X[i] && 0<=by+Y[i] && bx+X[i]<COLUMN && by+Y[i]<ROW && snake[by+Y[i]][bx+X[i]]==0)) break; } } if(count==ROW*COLUMN) break; } } public static void print(int[][] snake){ for(int[] row:snake){ for(int column:row) System.out.print(column+"\t"); System.out.println(""); } } } //运行结果如下 20 21 22 23 24 25 26 1 19 40 41 42 43 44 27 2 18 39 52 53 54 45 28 3 17 38 51 56 55 46 29 4 16 37 50 49 48 47 30 5 15 36 35 34 33 32 31 6 14 13 12 11 10 9 8 7
相关文章推荐
- 任意矩形填充
- 将[1,n^2]区间内n^2个数字分别填充到n*n的矩阵里,要求任意两个相邻的数字的和,它们的最大值最小是多少?
- 实现任意角度渐变填充(一) -- 双色渐变填充矩形
- 实现任意角度渐变填充(二) -- 多色渐变填充矩形
- OpenCV学习九:绘制直线、矩形、椭圆、原型、填充任意图形
- 使用正则表达式将任意长度的浮点数字的字符串转换成百分数
- c++任意数字转换为字符串
- 前端在线编程笔试记录——蛇形数字
- excel自动填充长数字
- 任意数字、字符序列,输出它们所有的排列组合
- OpenCV截取图像的任意形状区域,规则的图形(圆、椭圆、矩形),不规则鼠标自己选择
- c++10进制转换为任意2-16进制数字
- C语言-输入任意多个数字,数字间用空格隔开,然后将数字求和。
- 数组方法关于任意数字类型的数组求最大值解决办法
- 求一副扑克牌的顺子,大小王记为0,可以充当任意数字
- C#任意区域填充
- 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积
- 任意输入几个数字,然后将他们输出
- 判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)
- 任意输入一个正整数,求出其各位数字之和