蛇形填数(理解起来超简单!!!)

4 篇文章 0 订阅

话不多说,先放原题。
在这里插入图片描述
在这里插入图片描述
怎么说呢,蛇形填数这个填充矩阵的时候方法可能不是很好想,还是很抽象的,但是这个方法绝对非常好理解(边界模拟法)。
首先,咱们先确定矩阵的四个边界,在赋值完最外层边界后,再往里赋值里面的一个子矩阵,不断循环,直至填充完整个矩阵。
AC代码(建议先“食用”截图自己打一遍,带注释的哦):
在这里插入图片描述
在这里插入图片描述
文本格式(一定要自己写一遍哈):

#include<iostream>
using namespace std;
const int N=110;
int q[N][N],n,m;
int main()//赋值过程中符合矩阵填充的方式 
{
	cin>>n>>m;
	int i,j,s=1,x=n,z=1,y=m,k=1;//上下左右四个边界,初始值 
	while(s<=x&&z<=y)
	{
		for(i=z;i<=y;i++)//上边界赋值 
			q[s][i]=k++;
		for(i=s+1;i<=x;i++)//右边界赋值 
			q[i][y]=k++;
		for(i=y-1;i>=z&&s<x;i--)//下边界赋值 
			q[x][i]=k++;
		for(i=x-1;i>s&&z<y;i--)//左边界赋值 
			q[i][z]=k++;
		s++,x--,z++,y--; 
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			cout<<q[i][j]<<' ';//输出就OK了 
		cout<<endl;
	}
	return 0;
}

“饭”后总结:
也不知道大家“食用”的怎么样,但是这个题确实是一个思路的问题,掌握了解题思路,代码实现就很简单了,也希望大家平常能够多锻炼下思维能力,大家一起加油。
Fighting!

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值