回旋矩阵的问题

Ritchie_ 2012-12-23 11:38:22
以下是我写的回旋矩阵的code:
输入的row col分别为4 4,则输出为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
但是在我的代码中,最后一个数总是无法赋值(通过查找整个数组没有赋值的那一个),本人愚钝,只好请各位帮忙了!!

static int b = 0, c = 0, d = 1, e = 2, k = 1, p = 1;
int Snack(int **a, int b, int c, int x1, int y1, int row, int col ) //蛇形矩阵函数
{
if(k > row*col-1)
{
for( i = 0; i < row ; i++ )
for( j = 0 ; j < col ; j++ )
if(a[i][j]<0) //查找并对最后一个数据赋值
{a[i][j]=k;break;}
return 1;
}
else if(p == 1) //向右横行
{
for( ; c < y1-1 ; c++ )
{a[b][c] = k;k++;}
y1--;
p=2;
Snack( a,b, c, x1, y1, row, col );
}
else if( p == 2 ) //向下竖列
{
for( ; b<x1-1 ; b++ )
{a[b][c] = k;k++;}
x1--;
p=3;
Snack( a, b, c, x1, y1, row, col );
}
else if( p == 3 ) //向左横行
{
for( ; c >= d ; c-- )
{a[b][c] = k;k++;}
d++;
p=4;
Snack( a, b, c, x1, y1, row, col );
}
else //向上竖列
{
for( ; b >= e ; b-- )
{a[b][c] = k;k++;}
e++;
p=1;
Snack( a, b, c, x1, y1, row, col );
}
}
...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ritchie_ 2012-12-23
  • 打赏
  • 举报
回复
非常感谢,刚刚自己改了下,验证了,正要回复呢
14号选手 2012-12-23
  • 打赏
  • 举报
回复
引用 5 楼 zigui12 的回复:
感谢几位仁兄指导 但是不是只能实现长宽均相同的矩阵吗?对于一个螺旋矩阵,应该满足对所有的矩形数据均有效的吧??但是我运行了我的程序,能实现对所有row,col均为正整数的螺旋矩阵
矩形变长修改一下还有一些局部的位置修改一下就行了 大致的思路和框架是没有什么太大的变化的
Ritchie_ 2012-12-23
  • 打赏
  • 举报
回复
感谢几位仁兄指导 但是不是只能实现长宽均相同的矩阵吗?对于一个螺旋矩阵,应该满足对所有的矩形数据均有效的吧??但是我运行了我的程序,能实现对所有row,col均为正整数的螺旋矩阵
14号选手 2012-12-23
  • 打赏
  • 举报
回复
请参考我的博文 http://blog.csdn.net/xuchao1229/article/details/8117312
prajna 2012-12-23
  • 打赏
  • 举报
回复
這個用遞歸不好直觀,

#include <stdio.h>
#define N 4
int arr[N][N];
int main(void)
{
	int i,j,k,n;
	i=j=k=0;
	n=1;
	for (k=0; k<N/2+1; k++) {
		for (j=k; j<N-k;j++)
			arr[k][j]=n++;
		for (j=k+1; j<N-k;j++)
			arr[j][N-k-1]=n++;
		for (j=N-k-2; j>=k;j--)
			arr[N-k-1][j]=n++;
		for (j=N-k-2; j>k;j--)
			arr[j][k]=n++;
	}
	for (i=0;i<N;i++) {
		for (j=0;j<N;j++)
			printf("%4d", arr[i][j]);
		printf("\n");
	}
	return 0;
}
Gonefar 2012-12-23
  • 打赏
  • 举报
回复
我说一下我想到的一个思路。先初始化数组的每个元素为0.然后赋值时,先检测周围的情况,优先赋值的顺序是该元素几何位置的上、右、左、下,赋值时该位置的元素值为0,用一个变量记录每次移动的次数,直到该元素的周围没有值为0的元素,则结束。
东大坡居士 2012-12-23
  • 打赏
  • 举报
回复
too complicated!

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧