蛇形矩阵求解
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
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
相关文章推荐
- 蛇形矩阵求解
- 最大公约数求解,GCD算法的通俗解释
- 求解最长公共子序列问题(LCS)
- java使用回溯法求解数独示例
- POJ 2955 (区间dp,划分区间求解)
- 欧拉回路的求解(dfs和fleury算法)
- 用决策树模型求解回归问题(regression tree)
- 简谈--递推求解
- 瞎谈CNN:通过优化求解输入图像
- 迷宫求解
- 002-贪心算法求解“均分纸牌”
- 【机器学习系列】EM算法求解三硬币问题(python版本)
- [置顶] 迷宫求解(栈实现)
- 博弈游戏(2)-c#求解-英雄会在线编程题目
- 最近公共祖先(LCA)的三种求解方法
- 基于遗传算法(Genetic Algorithm)的TSP问题求解(C)
- 平衡数的求解
- 暴力法求解——简单枚举(除法)
- 2016! 的结果有多少个0的求解方法
- fzu 2038图的遍历,递归求解