矩阵分析:把回旋矩阵看作多个空心的矩阵,如图:
注:五阶矩阵示意:
然后找到每个空心矩阵和它上下左右的for循环关系即可,如图:
注:六阶矩阵示意:
其中重要的一点是:将矩阵的上下和左右对称分析,这样确保自己不会再分析的过程中,头晕眼花,相关代码如下:
package proj18.回旋矩阵;
import javax.swing.JOptionPane;
public class main {
public static void main(String[] args) {
String str=JOptionPane.showInputDialog("你想要几阶回旋矩阵:");
int n=Integer.parseInt(str);
int[][] a= new int [100][100];
int i,j,num=0;
for(int m=0;m<n/2;m++) {//n阶矩阵,意味着从外至内一共有n/2向下取整个矩阵;
for(j=m;j<n-m;j++) {//上
a[m][j]=num++;
}
for(i=m+1;i<n-m-1;i++) {//右
a[i][n-m-1]=num++;
}
for(j=n-m-1;j>=m;j--) {//下
a[n-m-1][j]=num++;
}
for(i=n-m-2;i>=m+1;i--) {//左
a[i][m]=num++;
}
if(n%2==1) {//当阶数%2=1时,最中间的数值;
a[n/2][n/2]=n*n-1;
}
}
for(i=0;i<n;i++) {//输出矩阵
for(j=0;j<n;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
其中此段代码通用c/c++/java: