您的位置:首页 > 其它

把一个方阵顺时针旋转。

2013-04-07 17:07 302 查看
/*
* 转方阵
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1  2  3  4
5  6  7  8
9 10 11 12
13 14 15 16
转置后变为:
1  5  9 13
2  6 10 14
3  7 11 15
4  8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13  9  5  1
14 10  6  2
15 11  7  3
16 12  8  4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
*/
public class Demo03 {
// 矩阵顺时针旋转
public static void rotation(int[][] n,int [][] m,int i,int j){
int t = j;	// 标记最后一行的位置
if(i>=n.length) return;
for(int k=0;k<n.length;k++){
m[i][k] = n[j--][i];	// 解决一行
}
rotation(n,m,++i,t);	// 递归解决下一行
}
// 输出矩阵
public static void print(int[][] t){
for(int[] x: t){
for(int y:x){
System.out.print(y+"\t");
}
System.out.println();
}
}
public static void main(String[] args){
int[][] n = {
{1 ,2 ,3 ,4 },
{5 ,6 ,7 ,8 },
{9 ,10,11,12},
{13,14,15,16}
};
print(n);	// 显示原矩阵
int len = n.length;
int[][] m = new int[len][len];	// 目标矩阵
rotation(n,m,0,len-1);	// 矩阵顺时针旋转
System.out.println("顺时针旋转结果:");
print(m);	// 显示目标矩阵
}
}
运行结果:
1	2	3	4
5	6	7	8
9	10	11	12
13	14	15	16
顺时针旋转结果:
13	9	5	1
14	10	6	2
15	11	7	3
16	12	8	4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐