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等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
随机推荐
- 【做题】BZOJ2342 双倍回文——马拉车&并查集
题意:有一个长度为\(n\)的字符串,求它最长的子串\(s\)满足\(s\)是长度为4的倍数的回文串,且它的前半部分和后半部分都是回文串. \(n \leq 5 \times 10^5\) 首先,显然 ...
- P3727 曼哈顿计划E
点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?当然是打表了 然后各种 ...
- facebook api之基本概念(中文)
Facebook广告API系列 1 Facebook Graph API Facebook提供了一套类rest的接口,统称为Graph API.为啥叫Graph?因为facebook把所有的资源都抽象 ...
- 洛谷P2362 围栏木桩----dp思路
在翻dp水题的时候找到的有趣的题0v0 原文>>https://www.luogu.org/problem/show?pid=2362<< 题目描述 某农场有一个由按编号排列的 ...
- Vim-编辑器之神
几点声明: 作者只是一位小小的 \(OIer\) ,并不会什么过于神仙的东西,我这篇文章只是帮助人入门的而已. 若有人在 OI-Wiki上见过了原文章,原作者是我 \(......\) ,真不是抄 \ ...
- Lintcode241-String to Integer - Naive
Given a string, convert it to an integer. You may assume the string is a valid integer number that c ...
- SAP字段与表的对应关系
SAP字段与表的对应关系 MASTER DATA-主数据 Customer Master KNA1 Customer Basic Data KNB1 ...
- JavaScript重点知识(一)
一.总括 基础知识: 1.变量 2.原型和原型链 3.作用域和闭包 4.异步和单线程 JS的API: 1.BOM,DOM操作 2.事件绑定 3.Ajax 4.JSOP 5.存储 二.基础知识 2.1知 ...
- 远程连接MongoDB报“Network is unreachable”错误的解决方法
解决办法:/etc/mongod.conf 里把127.0.0.1 改成 0.0.0.0
- rtrim
<?php $str = '14岁'; $new_str = rtrim($str, '岁'); echo $new_str; 如果右边是'岁',就过滤掉.