題目:給定一個數字num,輸出一個num階矩陣,矩陣中的元素為1到num2,按回形排列
eg1:

思路:
1、用一個二維陣列來存數,
2、按照填充的順序來依次賦值,
3、賦值順序只有4種操作:從左向右、從上向下、從右向左、從下向上,

注:主要注意點在一行或一列結束的轉折處
代碼:
import java.util.Scanner;
public class ArrayTest4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("請輸入一個數:");
int num = scan.nextInt();
int[][] a = new int[num][num];//宣告一個 num行 num列的陣列
int i=0,j=0,n=1;//i:行 j:列
int maxi=num-1,maxj=num-1,mini=0,minj=0;//maxi:行最大值 maxj:列最大值 mini:列最小值 minj:行最小值
int k=1;//決定向哪個方向走
while(n<=num*num) {
//向右
if(k==1) {
if(j<=maxj && a[i][j]==0)
a[i][j++] = n++;
else {
k=2;
j--;
i++;
maxj--;
}
}
//向下
if(k==2) {
if(i<=maxi && a[i][j]==0)
a[i++][j] = n++;
else {
k=3;
i--;
j--;
maxi--;
}
}
//向左
if(k==3) {
if(j>=minj && a[i][j]==0)
a[i][j--] = n++;
else {
k=4;
j++;
i--;
minj++;
}
}
//向下
if(k==4) {
if(i>=mini && a[i][j]==0)
a[i--][j] = n++;
else {
k=1;
i++;
j++;
mini++;
}
}
}
//遍歷陣列并輸出
for(i=0;i<num;i++) {
for(j=0;j<num;j++) {
System.out.print(a[i][j]+"\t");
}
System.out.println();//換行
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259216.html
標籤:java
上一篇:Java學習筆記第05期——Java基礎語法Part4
下一篇:java多執行緒總結
