java螺旋数组
来源:互联网 发布:大数据 文化产业 编辑:程序博客网 时间:2024/05/19 02:06
import java.util.Scanner;/** * 输出螺旋数组(N*M) * @author msidolphin * */public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int M = in.nextInt(); in.close(); int[][] array = new int[N][M]; //左上角和右下角坐标 int x1 = 0; int y1 = 0; int x2 = N - 1; int y2 = M - 1; int k = 1; while(true) { //针对当两点处于同一行的情况 if(x1 - x2 == 0 && y1 <= y2) { for(int i = y1 ; i <= y2 ; ++i ) { array[x1][i] = k; k++; } break; } //如果两点重合或错开,则数组构造完毕 if(x2 - x1 <= 0 && y2 - y1 <= 0) { break; } int x3 = x1; //暂存x1 y1 x2 y2的值 int y3 = y1; int x4 = x2; int y4 = y2; while(true) { if(x1 < x2) { array[x1][y1] = k; k++; if(y1 == y2) { x1++; }else { y1++; } }else { break; } } while(true) { if(x2 > x3){ array[x2][y2] = k; k++; if(y2 == y3) { x2--; }else { y2--; } }else { break; } } //左上角坐标向右下移一个单位,右下角向上移一个单位 x1 = x3 + 1; y1 = y3 + 1; x2 = x4 - 1; y2 = y4 - 1; //两点重合,在结束循环前赋值 if(x1 == x2 && y1 == y2) { array[x1][y1] = k; } } //打印数组 for(int i = 0 ; i < N ; ++i) { for(int j = 0 ; j < M ; ++j) { System.out.print(array[i][j] + " "); } System.out.println(); } }}
7 X 11
1X10
0 0
- 螺旋数组java实现
- java螺旋数组
- 用java实现螺旋数组
- java实现螺旋数组-另类方法
- Java 实现顺时针螺旋二维数组输出
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- Activity和多个fragments的切换及数据的传递
- 一天搞定CSS: 清除浮动(float)--13
- 时间对话框DatePickerDialog
- UE4渲染线框
- iOS 字符串处理
- java螺旋数组
- 一位资深程序员大牛给予Java初学者的学习路线建议
- Qt与C#之间的代码移植细节--慢慢的
- FreeMarker入门案例
- Netty教程-Channel
- 回溯法
- 1073: 人民币问题
- 杭电1258 Sum it Up DFS 搜索
- 高通常见缩写