经典矩阵试题(一)

📘北尘_个人主页
🌎个人专栏 :《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、结果


总结

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

相关推荐
Jerry2 小时前
LeetCode 28. 找出字符串中第一个匹配项的下标
算法
Jerry4 小时前
LeetCode 459. 重复的子字符串
算法
海石7 小时前
1500分的题目,确实有实力,不过还是我略胜一筹
算法·leetcode
海石7 小时前
【记忆化搜索】条条大路通AC,走好适合你的那一条,走到后再考虑走得快
算法·leetcode
Jerry9 小时前
LeetCode 151. 反转字符串中的单词
算法
a11177611 小时前
LM 算法迭代过程动画演示(SLAM)
算法
头茬韭菜11 小时前
Context 的生死抉择:四层压缩、截断算法与 Session Memory
算法·ai
Jerry11 小时前
LeetCode 541. 反转字符串 II
算法
Jerry12 小时前
LeetCode 344. 反转字符串
算法
搞科研的小刘选手12 小时前
【香港大学主办&IEEE出版】第六届计算机视觉、应用与算法国际学术会议(CVAA 2026)
算法·计算机视觉·应用·学术会议