蛇型矩阵-二维数组

本文介绍了一种填充蛇形矩阵的方法,从中心开始逆时针方向逐圈扩展,直至填满n行n列的矩阵,并计算对角线数字之和。通过定义四个移动方向,按照特定顺序更新矩阵元素,最终输出结果矩阵和对角线之和为25。
摘要由CSDN通过智能技术生成

问题描述:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字
并输出矩阵对角线数字之和。

输入样例:
3
输出样例:
5 4 3
6 1 2
7 8 9
25
解题思路:
定义四个方向,比如我们用k来代替方向,k为0的时候右移,k为1的时候上移,k为2的时候左移,k为3的时候下移。
循环的次数为N*N-1次(起始位置我们定义好了)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int i,j,k;
	int t=1,t1=1,t2=1,t3=1;//定义拐点
	int k=0,n;//k为0的时候右移,k为1的时候上移,k为2的时候左移,k为3的时候下移。
	int a[10][10];
	printf("请输入矩阵的阶乘:");
	cin>>n;
	i=n/2;//
	j=(n-1)/2;//求解起始位置的值
	a[i][j]=1;//给起始位置赋初值
	while(x<n*n-1)
	{
		if(k==0)//右移
		{
			a[i][j+1]=a[i][j]+1;
			j++;
			if((j==n-1)/2+t)//此处t的用意是用来判断蛇头从由右移到上移的拐点的访问次数,
			{				//这个次数与起始的坐标之和用来作为判断条件(下同)
				t++;
				k=1;
			}
			else
			{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值