标题:回一个螺旋距阵的问题!
只看楼主
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
 问题点数:0 回复次数:2 
回一个螺旋距阵的问题!

昨天还看到的,怎么今天就没啦?

#include <stdio.h> #define N 5 void main() { int n,i1,j1,i2,j2,k,s[N][N]; /*i1,j1,i2,j2分别是距阵的上下左右边界*/ n=i1=j1=0; i2=j2=N-1; while(i1<=i2) { for(k=j1;k<=j2;k++)s[i1][k]=++n; i1++; for(k=i1;k<=i2;k++)s[k][j2]=++n; j2--; for(k=j2;k>=j1;k--)s[i2][k]=++n; i2--; for(k=i2;k>=i1;k--)s[k][j1]=++n; j1++; } for(i1=0;i1<N;i1++) { for(j1=0;j1<N;j1++) printf("%5d",s[i1][j1]); printf("\n"); } }

这是我在网吧写的,没有编译测试过,你试试,反正是这思路。

搜索更多相关主题的帖子: 螺旋 void int main define 
2004-05-25 20:09
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8842
专家分:2567
注 册:2004-3-25
得分:0 
数据库出了点问题,重新装的备份数据库,很抱歉,丢了一部分最近的数据

[此贴子已经被作者于2004-05-25 20:12:06编辑过]



畅所欲言
2004-05-25 20:11
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 

那个题目是我写的,当时不会做,想了好久,我也想出了一种(好像比你的麻烦):

#define N 5

main()

{int i,j,t,a[N][N],k;

for(i=0,j=0,t=0,k=1;k<N*N;k++) /*i控制行,j控制列,t控制圈数,最外圈时t=0 */

{a[i][j]=k; if((i==t+1)&&(j==t)) t++;

if(i==t) {j++;if(j==N-t) {j=N-1-t;i++;}}

else {if(j==N-1-t) {i++;if(i==N-t) {i=N-1-t;j--;}}

else {if(i==N-1-t) {j--;if(j==t-1) {j=t;i--;}}

else if(j==t) i--;

}

}

}

}

这样也可以的,我运行出来了的,不过好像比你的麻烦多了!


2004-05-29 22:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-1722-1-1.html




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

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