您的位置:首页 > 其它

二维数组顺时针输出

2016-08-25 20:22 141 查看
很简单的一个算法,结果弄了半天,最后发现是行和列弄错了,心塞塞

这种题还是找出数学规律重要

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package javaapplication1;

/**
*
* @author YJZ
*/
public class PrintMatrixClockwisely {

public static void PrintMatrix(int a[][],int columns,int rows){
if(a==null||columns<=0||rows<=0){
System.out.print("输入错误");
}
int start =0;
while(columns>start*2&&rows>start*2){
PrintMatrixInCircle(a,columns,rows,start);
start++;
}
}
public static void PrintMatrixInCircle(int a[][],int columns,int rows,int start){
int endX=rows-1-start;
int endY=columns-1-start;
//从左到右
for(int i=start;i<=endX;i++){
int number=a[start][i];
PrintNumber(number);
}
//从上到下
if(start<endY){
for(int i=start+1;i<=endY;i++){
int number=a[i][endX];
PrintNumber(number);
}
}
//从右到左
if(start<endX&&start<endY){
for(int i=endX-1;i>=start;--i){
int number=a[endY][i];
PrintNumber(number);
}
}
//从下到上
if(start<endX&&start<endY-1){
for(int i=endY-1;i>=start;--i){
int number=a[i][start];
PrintNumber(number);
}
}
}
public static void PrintNumber(int number) {
System.out.print(number+" ");
}
public static void Text(int columns,int rows){
int[][] aa=new int[columns][rows];
int b=1;
for(int i=0;i<columns;i++){
for(int j=0;j<rows;j++){
aa[i][j]=b;
b++;
}
}
PrintMatrix(aa,columns,rows);
System.out.println(" ");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Text(4,1);
Text(1,4);
Text(4,4);
Text(1,1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维数组 算法