c语言经典的螺旋矩阵的几种

11.13
“今天也要好好学习,虽然水了一天,今天的高代数分也没怎么搞懂“

螺旋矩阵出现在我们学校2-3周前布置的编程题里,当时把自己转晕了。
现在来回顾一下,介绍一下主流的实现算法

大一都过了1/4了,好好学吧。

题目很简短,就是让你输出一个型如
在这里插入图片描述
的螺旋数组。

solution1:

设置一个大的for循环,里面有四个小for循环,对应四个边,因此进行一个大循环,便走完了一圈。

先空着;

solution2:

同样是循环,但是这个循环每一次循环是走一步,循环体是四个if判断.
原理是在矩阵的四个部位有相同的走法,如图
在这里插入图片描述
只需要写出对应的判断条件即可
虽然这个是从里向外旋的,但是大致相同。

对这个螺旋:
在这里插入图片描述
代码如下:
n是矩阵的阶
下面将用(x,y)来记录位置 选取正常的像素坐标系,原点在左上。

int x=0,y=0;
for (int i = 1;i<= n*n;i++){
	if (x>= y && n-1-x >= y){
		ary[x][y] = i;
		x++;
	}
	类似这样

}

solution3:
递归,感觉最好理解:

递归就是模拟一个一样的过程
显然在这里一样的过程可以认为是走过一圈
之后一次降阶

函数参数为:void rotate_once (int ary[][],int x,int y,int start_num,int n);// x,y是初始坐标,start_num是初始的要打印的数字,n是阶数(递归一次变n-2);

{
	if (n==0) return ;
	if (n==1) ary[n/2][n/2] = start_num;   //奇偶的两种出口条件;
	int j = y,i= x;
	for (i= x;i<n-x-1;i++){
		ary[i][j] = start_num;
		start_num++;
		。
		。
		。

算了,我想我不会
不想再想了…

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值