经典矩阵试题(一)

📘北尘_个人主页
🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录


一、回型矩阵

1、题目介绍

2、思路讲解

回型矩阵就是顺时针输入1到n的数字,这个题的思路是,定义x方向y方向的移动的,首先是x不变y加1,然后x加1y不变,然后x不变y减1,最后x减1 y不变。

然后循环注意边界问题,便可。

3、代码实现

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
    int n;
    cin>>n;
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
    int ans[20][20]={0};
    for(int x=0,y=0,d=0,k=1;k<=n*n;k++)
    {
        ans[x][y]=k;
        int a=x+dx[d],b=y+dy[d];
        if(a<0 || a>=n || b<0 || b>=n || ans[a][b])
        {
            d=(d+1)%4;
            a=x+dx[d],b=y+dy[d];
        }
        x=a,y=b;
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
           cout<<ans[i][j]<<' ';
        }
        cout<<endl;     
    }
}

4、结果


二、蛇型矩阵

1、题目介绍

2、思路讲解

我们可以发现i+j = n-1的条件,再发现以i+j = n - 1为分界线,前面的斜线分别是i + j = n-2,i+j = n-3...后面的分别是i+j = n,i+j = n+1...以此类推,让count= i+j,count从0开始再进行累加,直到2 * n-2结束,count为奇数的时候是左下,偶数的时候右上。

3、代码实现

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
	int n;
	cin>>n;
	int ans[1000][1000]={0};
	int count=0;
	int sum=1;
	while(count<=n*2-2)
	{
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				if(i+j==count)
				{
					if(count%2==0)
					{
						ans[j][i]=sum++;
					}
					else 
					{
					ans[i][j]=sum++;
					}
				}
			}
		}
		count++;
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout<<ans[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
}

4、结果


总结

蛇形矩阵是一种矩阵排列方式,它的排列方式类似于蛇形爬行。这种排列方式可以用于数字、字母等的排列,也可以用于图像的展示。在计算机科学中,蛇形矩阵也被广泛应用于图像处理、数据压缩等领域。
回形方阵是一种排列方式,通常用于将一段文字或图形排列成一个正方形或长方形,使得文字或图形在正方形或长方形中呈现出回文的形式。回形方阵在古代中国被广泛应用于诗歌、文章、书法等领域,是一种独特的艺术形式。
回形方阵的排列方式通常是从中心点开始,按照顺时针或逆时针方向依次填充文字或图形,直到填满整个正方形或长方形。在填充过程中,需要注意每一行和每一列的长度应该相等,以保证最终呈现出的形状是一个完整的正方形或长方形。
回形方阵的应用范围很广,除了在古代文学艺术中的应用外,现代人们也常常将其用于设计海报、广告、宣传画等场合,以达到更加独特、有趣的效果。

相关推荐
坚持编程的菜鸟11 小时前
模拟实现memmove
c语言·算法·模拟实现memmove
wabs66612 小时前
关于图论【最短路径之Dijkstra算法(堆优化版)|卡码网47.参加科学大会的思考】
数据结构·算法·图论·优先级队列·邻接表·小顶堆·卡码网
坚持编程的菜鸟12 小时前
编写判断大小端程序
c语言·算法·判断大小端
papaofdoudou12 小时前
判断排列逆序奇偶性的乘积判别法(范德蒙德符号法)
人工智能·算法
linux-hzh13 小时前
百日算法修炼 · Day 03
java·算法
问商十三载13 小时前
RAG 检索效果差怎么排查?2026 五层诊断法完整指南
开发语言·人工智能·windows·python·算法
嵌入式老牛14 小时前
三相电气量采集模块设计(三)非同步采样时的精度提升
算法·精度·计量
今天AI了吗15 小时前
精细化落地教程:TimechoAI调参标准+数据清洗规范+误差归因+阈值适配全维度指南
大数据·人工智能·算法
zephyr0516 小时前
从递归到迭代:二叉树非递归前中后序遍历详解
算法
Dr.kangder16 小时前
嵌入式总线设备解析——TTE总线应用与实践
开发语言·网络·算法·嵌入式·多任务·同步机制