蛇形矩阵求解

先放代码:

#include<iostream>
using namespace std;

int main()
{
	int n;
	cin>>n;
	int **a=new int*[n];
	for(int i=0;i<n;i++)
		a[i]=new int[n];
	for(int i=0;i<n;i++)
		a[0][i]=i+1;
	int count=n+1;
	bool s=true;
	int step=n-1;
	int sx=1,sy=n-1;
	while(step>0&&count<n*n)
	{
		if(s)
		{
			int step1=step;
			while(step1--)
			{
				a[sx++][sy]=count++;
			}
			sy--;
			sx--;
			//count--;
			step1=step;
			while(step1--)
			{
				a[sx][sy--]=count++;
			}
			//count--;
			sx--;
			sy++;
			step--;
			s=false;
		}
		else
		{
			int step1=step;
			//sy++;
			while(step1--)
			{
				a[sx--][sy]=count++;
			}
			sx++;
			sy++;
			step1=step;
			while(step1--)
			{
				a[sx][sy++]=count++;
			}
			sy--;
			sx++;
			step--;
			s=true;
		}
	}

	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			cout<<a[i][j]<<" ";
	return 0;
}

       所谓蛇形矩阵,就是矩阵赋值的规则定义,所以规则摆明,程序也就自然而然写出来。没什么特别要说的,代码编写就是先要有思想,然后按照自己的思想写代码。大牛代码质量高,但一般人写出来的代码一定是还要调试。思想是第一步,实现是第二步,调试是第三步。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值