我用递归算法打印的旋转方阵代码如下:
- class xuanzhuan
- {
- public static void main(String[] args)
- {
- int[][] arr=new int[6][6];//建立6X6的二位数组
- perm(arr,0,1,6);//函数调用
- for(int i=0;i<6;i++)
- {
- for(int j=0;j<6;j++)
- {
- System.out.print(arr[i][j]+" ");//打印数组
- }
- System.out.print("\n");
- }
- }
- public static void perm(int arr[][],int start,int num,int size)// 实现旋转方阵的函数
- {
- int i=start;
- int j=start;
- if(size==0)//当方阵大小为0时结束
- return;
- if(size==1)
- arr[start][start]=num;//当方阵大小为1时直接打印
- for(int k=0;k<size-1;k++)//打印A区域
- {
- arr[i][j]=num;
- num++;
- i++;
- }
- for(int k=0;k<size-1;k++)//打印B区域
- {
- arr[i][j]=num;
- num++;
- j++;
- }
- for(int k=0;k<size-1;k++)//打印C区域
- {
- arr[i][j]=num;
- num++;
- i--;
- }
- for(int k=0;k<size-1;k++)//打印D区域
- {
- arr[i][j]=num;
- num++;
- j--;
- }
- perm(arr,start+1,num,size-2);//递归调用
- }
- }
复制代码
运行结果:
C:\Users\Administrator\Desktop
怎样才能让方正对齐(及最下面一行的数与其上一行的数对齐?)。或者有没有更好的方法打印旋转方阵,求交流。
|
|