Java编码 蛇形矩阵的构建与遍历输出
一、蛇形矩阵的构建,并按行输出
例:
输入:n,
生成n*n的蛇形矩阵
1 2 3
8 9 4
7 6 5
输出:1 2 3 8 9 4 7 6 5
java编码
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n < 0)
return;
if(n == 1){
System.out.println(1);
return;
}
int[][] m = new int[n][n];
//定义4个变量,分别记录当前行和列的上下限
int i1 = 0, j1 = 0, i2 = n - 1, j2 = n - 1;
int i = 0, j = 0;
int begin = 1;
//4个for循环,遍历蛇形矩阵
while(i1 <= i2 && j1 <= j2){
for(; j <= j2; ++j){//one row
m[i][j] = begin;
begin++;
}
j--;
i++;
i1++;
for(; i <= i2; ++i){//one column
m[i][j] = begin;
begin++;
}
j2--;
j--;
i--;
for(; j >= j1; --j){//one row
m[i][j] = begin;
begin++;
}
i2--;
j++;
i--;
for(; i >= i1; --i){//one column
m[i][j] = begin;
begin++;
}
j1++;
j++;
i++;
}
//按行输出 蛇形矩阵
for(i = 0; i < n; ++i)
for(j = 0; j < n; ++j)
System.out.println(m[i][j] + " ");
}
二、已知蛇形矩阵m,顺时针顺序输出
例:
矩阵m
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
输出:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] m = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
int n = m.length;
int c = m[0].length;
if(n == 1){
for(int a = 0; a < m[0].length; ++a)
System.out.print(m[0][a] + " ");
}
if(c == 1){
for(int a = 0; a < m.length; ++a)
System.out.print(m[a][0] + " ");
}
//定义4个指针,记录行和列的上下限
int i1 = 0, j1 = 0, i2 = n - 1,j2 = c - 1;
int i = 0, j = 0;
while(i1 <= i2 && j1 <= j2){//one row
for(; j <= j2; ++j)
System.out.print(m[i][j] + " ");
i++;
j--;
i1++;
for(; i <= i2; ++i)//one column
System.out.print(m[i][j] + " ");
i--;
j--;
j2--;
for(; j >= j1; --j)//one row
System.out.print(m[i][j] + " ");
i--;
j++;
i2--;
for(; i >= i1; --i)//one column
System.out.print(m[i][j] + " ");
i++;
j++;
j1++;
}
}
Java编码 蛇形矩阵的构建与遍历输出的更多相关文章
- 【JAVA-JDT-AST】Java抽象语法树的构建、遍历及转成dot格式(附Github源码)
Background: 最近为了重现tree-based clone detection的论文:L. Jiang, G. Misherghi, Z. Su, and S. Glondu. Deckar ...
- Java使用foreach语句对数组成员遍历输出
/** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...
- Java实现蛇形矩阵
public class Solution { //下x++ 左y-- 上x-- 右y++ public void prints(int n) { int[][] mp = new int[n][n] ...
- java递归实现文件夹文件的遍历输出
学习java后对一个面试小题(今年年初在团结湖面试的一个题目) 的习题的编写. ''给你一个文件,判断这个文件是否是目录,是目录则输入当前目录文件的个数和路径,''' /** * @author li ...
- Java类的调用(实现数组排序和遍历输出)
两个类文件: Test1.java /** *同一个src下的两个类,主类在这里,调用另一个文件里的Public类 */ import java.lang.*; public class Test1 ...
- js实现蛇形矩阵
参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我 ...
- 【面试】输出"蛇形"矩阵
一.题目描述 腾讯实习在线笔试的一道题目. 根据输入的数字(< 1000),输出这样的"蛇形"矩阵,如下.输入n,输出(n * n)阶矩阵,满足由外到内依次增大. 如: 输入 ...
- 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序
面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序 Ajax 为更好的 Web 应用程序铺平了道路 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java™ ...
- 【JAVA编码专题】总结
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
随机推荐
- IPVS负载均衡
概念: ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分.ipvs运行在主机上,在真实服务器集群前充当负载均衡器. ...
- 160CrackMe练手 001
peid判断无壳,打开输入伪码注册,根据报错od查找字符串 接下来定位到字符串周边代码 0042FA15 |. 8D55 F0 lea edx,[local.4] 0042FA18 |. 8B83 D ...
- 【原理、注意点】Quartz的原理和需要注意的地方
基本介绍和核心接口 1.quartz是完全基于java的可用于进行定时任务调度的开源框架,使用的时候需要引入: <dependency> <groupId>org.quartz ...
- 数据库04_SQL简单实践
笔试实例 以MySQL为例,制作一个简单的表profit如下: T1 分别求1991年以及1992年第一季度的金额总和,效果如下: sql语句实现: SELECT year, SUM(amount) ...
- HDU 4576 Robot
思路 概率dp 既然是求概率,顺推 显然有转移\(dp[i][j]=dp[i-1][j-w]/2+dp[i-1][w]/2\) 然后是环,注意特判一下 环上不要用取模处理循环的情况,会被卡常 代码 # ...
- website for .Net Core
5 Ways to Build Routing in ASP.NET Core Bundling in .NET Core MVC Applications with BundlerMinifier. ...
- CommandLineParser命令行解析类
目的:方便用户在命令行使用过程中减少工作量 以前版本没这个类时,如果要运行带参数的.exe,必须在命令行中输入文件路径以及各种参数,并且输入的参数格式要与代码中的if语句判断内容格式一样,一不小心就输 ...
- ImgNoGoodWindow
using System;using System.Collections.Generic;using System.Linq;using System.Text;using UnityEditor; ...
- NOI2017 游记
成功在NOI2017退役……现在的我已经是一只退役狗了 结果也一直到了退役,我都还不会半平面交,不会单纯形,不会非旋转版Treap…… FWT我也不熟,分治FFT我也只写过一道板子题 但是现在已经退役 ...
- 浅谈Linux文件系统
Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败. Lin ...