| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:蛇形数组算法总结
取消只看楼主 加入收藏
liguoshi1984
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-7-4
收藏
 问题点数:0 回复次数:0 
蛇形数组算法总结
某天看到这种题
要求利用编程打印出如图效果
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

后来看到一个帖子终于明白了
我找了一下规律,把它推广到任意阶的方阵
主要看转弯地方数字的下标
左上角 : 16 a10
24 a21 i=j+1且i+j<N
右上角: 5 a04
19 a13 i+j=N-1且i<j
右下角: 21 a33
9 a44 i=j
左下角: 13 a40
23 a31 i+j=N-1 且i>j
代码如下
class Matrix {
public static void main(String[] args) {
Matrix a=new Matrix();
a.sheXing(12);
}
public void sheXing(int N)
{
int i,j,m,d;

int matrix[][] = new int[N][N];
i = 0;
j = 0;
m = 1;
d = 1;

while(m <= N*N){
matrix[i][j] = m;
switch(d){
case 1: if((i+j)==(N-1)&&(i<j))
{i=i+1;
d=2;
}
else
j=j+1;
break;
case 2: if(i==j)
{
j=j-1;
d=3;
}
else
i=i+1;
break;
case 3: if((i+j)==(N-1)&&(i>j))
{
i=i-1;
d=4;
}

else
{
j=j-1;
}
break;
case 4: if((i==(j+1))&&((i+j)<N))
{
j=j+1;
d=1;
}
else
{
i=i-1;
}
break;
}
m++;

}
for(int a = 0;a<N;a++)
{

for(int b = 0;b<N;b++)
System.out.print(matrix[a][b]+" ");
System.out.print("\n");
}
}
}
搜索更多相关主题的帖子: 蛇形 算法 
2007-10-24 08:48
快速回复:蛇形数组算法总结
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015916 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved