您的位置:首页 > 其它

蛇形矩阵求解

2013-12-16 10:09 113 查看
蛇形矩阵求解



Java代码:

public
class
SnakeMatrix {

/**
* @param args
*/
public
static void
main(String[] args) {
snakeMatrix(2,4);
snakeMatrix(4,4);
snakeMatrix(10,1);
snakeMatrix(1,10);
}
// 将矩阵当作是一条条从右上到左下或者从左下到右上的对角线,
// 根据对角线越界判断是否填充,依次按对角线方向填充数值。
// 例如 4 x 4蛇形矩阵
// 1 3- 4 10
// | / / / |
// 2 5 9 11
// / / /
// 6 8 12 15
// | / / / |
// 7 13 - 14 16

public
static void
snakeMatrix(int m,int n){
if(m<=0||n<=0)
return;
int[][] array=newint[m]
;
int c=0;
int size=m+n;//对角线总的数目,大于最长对角线填充个数,保证边界判断后可以完全填充
for(int i=0;i<size;i++){
int mm,nn;
if(i%2==0){
// 偶数为右上到左下方向填充对角线
// 起始点为横坐标点
mm=0;
nn=i;
for(int j=0;j<size;j++){
// 边界判断
if(mm>=0&&mm<m&&nn>=0&&nn<n)
array[mm][nn]=++c;
// 右上到左下方向
mm++;
nn--;
}
}else{
// 奇数为左下到右上方向填充对角线
// 起始点为纵坐标点
mm=i;
nn=0;
for(int j=0;j<size;j++){
if(mm>=0&&mm<m&&nn>=0&&nn<n)
array[mm][nn]=++c;
// 左下到右上
mm--;
nn++;
}
}
}
// 输出
System.out.println("************************");
System.out.println("SnakeMatrix:\t"+m+" x "+n);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
System.out.print(array[i][j]+" ");
System.out.println();
}
System.out.println("************************");
}
}

下载地址:

http://download.csdn.net/detail/ssuchange/6720721
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: