c*****y 发帖数: 90 | |
s******t 发帖数: 2374 | |
c*****y 发帖数: 90 | 3 好,谢谢。过两天有个面试,脑子已经动不了了,就像看看答案。:(
【在 s******t 的大作中提到】 : 我也想写一下。 : 等会我写一个你帮我看看。
|
m****n 发帖数: 589 | 4 我写了一个,不知道是不是这个意思?
void spiralPrint(int *array[], int m, int n)
{
int k = (m+1)/2;
int circle = 0, row = 0, column = 0;
for(circle = 0;circle < k; circle++){ // a circle
for(row = circle,column = circle; column < n- circle;column+
+ ){
printf("%d ",array[row][column]);
}
for(column = n -circle -1,row = circle +1; row < m - circle;
row++){
printf("%d ",array[row][column]);
【在 c*****y 的大作中提到】 : 记得以前讨论过。谢谢。
|
s******t 发帖数: 2374 | 5 我写晕了。不行了。。。
column+
【在 m****n 的大作中提到】 : 我写了一个,不知道是不是这个意思? : void spiralPrint(int *array[], int m, int n) : { : int k = (m+1)/2; : int circle = 0, row = 0, column = 0; : for(circle = 0;circle < k; circle++){ // a circle : for(row = circle,column = circle; column < n- circle;column+ : + ){ : printf("%d ",array[row][column]); : }
|
c*****y 发帖数: 90 | 6 哪位高手说说?
【在 s******t 的大作中提到】 : 我写晕了。不行了。。。 : : column+
|
j**l 发帖数: 2911 | 7 三种方法。
方法一,从左上角水平向右吭哧吭哧走,碰壁,哐铛停下来。改竖直方向,因为向上越
界,只能向下,继续吭哧吭哧向下走走,再次碰壁,停下来后水平从右向左走...
原则,不能越边界,访问过的元素作标记后也不能越过。碰壁后水平改竖直,竖直改水
平,只要能走,必只有一个方向好走,直到最后无路可走终止。
方法二,穷举四个分段路径走完外一圈,改变参数(比如下次每段的长度比上次减少2)
,继续迭代走内一圈。
方法三,同方法二,走完最外一圈后用递归取代迭代。 |
s******t 发帖数: 2374 | 8 看起来容易,写起来就彻底晕掉了。。。唉。。我等会写一下。
【在 j**l 的大作中提到】 : 三种方法。 : 方法一,从左上角水平向右吭哧吭哧走,碰壁,哐铛停下来。改竖直方向,因为向上越 : 界,只能向下,继续吭哧吭哧向下走走,再次碰壁,停下来后水平从右向左走... : 原则,不能越边界,访问过的元素作标记后也不能越过。碰壁后水平改竖直,竖直改水 : 平,只要能走,必只有一个方向好走,直到最后无路可走终止。 : 方法二,穷举四个分段路径走完外一圈,改变参数(比如下次每段的长度比上次减少2) : ,继续迭代走内一圈。 : 方法三,同方法二,走完最外一圈后用递归取代迭代。
|
c*******d 发帖数: 255 | |
s*********l 发帖数: 103 | |