蛇行矩阵两种编程方法及详解(c++)

这篇具有很好参考价值的文章主要介绍了蛇行矩阵两种编程方法及详解(c++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

输入格式

本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

输出格式

对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

样例输入

5

样例输出

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

 具体代码及详细分析

方法一:

此方法为本人初写该题目的方案,较为繁琐,但容易想到

要解此题,首先观察题目给的样例输出,找出其中的三层关系。
①每一行中,相邻数的增加关系是依次加1的,如第一行:1->3增加关系是2,3->6增加关系是3,6->10增加关系是4。(所以我们联想到要有一个变量k1且k1++)
②每行的第一个数由上到下,增加关系依次加1,如1->2增加关系是1,2->4增加关系是2,4->7增加关系是3。(所以我们联想到要有一个变量k2且k2++)
③每行的第一个相邻数之间的增加关系之间还存在一个恒为1的增加关系,如第一行1->3增加关系是2,第二行2->5增加关系是3,第三行4->8增加关系是4,那么2->3增加关系是1,3->4增加关系是1,这个增加关系一直都是1,没有变化。(所以我们联想到要有一个常量k3且k3=1)
④每行的数字个数有一个与N有关的减小关系,N是多少,第一行就是多少个数,接下来的每一行数字个数依次减1。

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n, m; cin >> n;
	m = n;
	int num[100][100];
	num[0][0] = 1;
	for (int i = 0; i < n; i++) {
		int a = i + 2;                         //代表每一行前两元素的差
		int b = i + 1;                         //代表第一列前两元素的差
		for (int j = 0; j < m; j++) {
			num[i][j + 1] = num[i][j] + (a++);
		}
		num[i + 1][0] = num[i][0] + (b++);
		m--;
	    }
	m = n;                                    //仍需要初始化m,否则程序会出现错误
	for (int i = 0; i < n - 1; i++) {
		for (int j = 0; j < m - 1; j++) {
			cout << num[i][j] << " ";
		}
		cout << num[i][m - 1] << endl;        //补充每一行最后一数组元素
		m--;                                  
	    }
	cout << num[n - 1][0];
	return 0;
           }

方法二:

找到各个数组之间的关系,即蛇形数组的规律,满足按对角线依次增加的规律

蛇行矩阵两种编程方法及详解(c++)

#include <bits/stdc++.h>
using namespace std;
int main() {
	int x, count = 1, mat[100][100];   //count为计数器
	for (int j = 0; j < 100; j++)      //据上图规律遍历所有斜对角数并赋初值
		for (int k = 0; k <= j; k++)
			mat[j - k][k] = count++;
	cin >> x;
	for (int j = 0; j < x; j++) {      //注意j、k、x之间的关系
		for (int k = 0; k + j < x; k++) cout << mat[j][k] << ' ';
		cout << endl;                  //补充每一行最后一个数组元素的的换行
		} 
	return 0;
}

上述内容皆为本人观点,如有错误欢迎指正 文章来源地址https://www.toymoban.com/news/detail-464416.html

到了这里,关于蛇行矩阵两种编程方法及详解(c++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 哈希表C++哈希表详解(知识点+相关LeetCode题目)

    目录 前言 一、什么是哈希表 二、哈希表的操作 2.1 操作时间复杂度 2.2 哈希表通用API 2.3 建立哈希表 2.3 哈希表常见结构介绍 Set(集合) Map(映射) unordered_map(哈希表) 三、哈希表的力扣经典题目 有效的字母异位词242 两个数组的交集 349 两数之和1 四数相加II 454 三数之和

    2024年03月20日
    浏览(47)
  • 【LeetCode题目详解】 977.有序数组的平方 209.长度最小的子数组59.螺旋矩阵II day2

    看完这个题目第一想法就是直接暴力解决,直接将全部平方然后进行排序。比如快排。 代码如下: 时间复杂度是 O(nlogn)或者说【O(n + nlogn)】,括号里面这个是为了比较接下来的方法。 然后看了代码随想录的视频学习了用双指针来写这道题的方法(说实话不看视频真没想到可

    2024年02月13日
    浏览(43)
  • 使用c语言编程时输入具体的年份和月份,求月份的天数的两种编程方法

    方法一:使用if……else语句  方法二:使用switch语句 考虑到一些读者需要相关资料和解决一些疑问,因此我新建立了一个学习交流群,我在群文件里上传了一些资料,需要的读者可以入群下载。 群中文件资料我会时常更新,主要资料是51单片机开发、32单片机开发、编程、嵌

    2024年02月11日
    浏览(65)
  • Win11安装iis的两种方法详解

    iis,也就是Internet Information Services,主要提供对WEB和FTP服务器的支持。那么win11新系统怎么安装iis呢?下面小编就给大家整理了两种安装方法,快来了解一下吧。 方法一 1、可以在中间的底部Windows图标上单击右键,打开运行(快捷键win+R)。 2、在运行里面输入appwiz.cpl 然后确

    2024年02月17日
    浏览(42)
  • 某软件的一个模块的需求规格说明书中描述【软件测试题目】

    某软件的一个模块的需求规格说明书中描述 (1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2% (2)非年薪制员工:严重过失,扣除当月薪资的8%;过失,扣除当月薪资的4% (1)分析原因及结果 原因 c1:年薪制员工 c2:非年薪制员工 c3:过失 c4:严重过失

    2024年02月08日
    浏览(50)
  • vscode运行c++结果输出在windows终端的两种方法

    打开.vscode中launch.json文件 修改下面三个配置 \\\"program\\\":\\\"C:\\\\Windows\\\\System32\\\\cmd.exe\\\", \\\"args\\\": [\\\"/C\\\",\\\"${fileDirname}\\\\${fileBasenameNoExtension}.exe\\\",\\\"\\\",\\\"pause\\\"], \\\"externalConsole\\\": true, 以非调试模式运行,ctrl+F5 打开.vscode中launch.json文件 修改\\\"externalConsole\\\": true, 在main函数中最后加入getchar()函数 注:方法2如

    2024年02月19日
    浏览(41)
  • 密码学——Hill体制密码中已知明文M和密文C求解密钥矩阵K的两种方法之逆矩阵求解法和待定系数求解法

    本文主要解决古典密码中的Hill体制密码在已知明文M和密文C的情况下求解密钥矩阵K的两种方法:①求逆矩阵②待定系数法。 如若不懂Hill体制的古典密码可以参照我上一篇文章密码学——几种典型的古典密码体制(Caesar体制、Playfair体制、Vigenere体制、Beaufort体制以及Hill体制)

    2024年02月02日
    浏览(62)
  • 两种方法用IDEA创建一个Servlet程序 新手教程详解

         Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 2.1 创建一个普通的java程序       页面左上角,点击文件 - 项目 - 新建项目: 2.2 添加框架支持          为新建

    2024年02月01日
    浏览(91)
  • Ubuntu安装OpenCV3.4.5(两种方法&&图文详解)

    博主在ubuntu20.04系统上又需要安装opencv,此前在18.04上安装过多次opencv,对计算机视觉开源库还是比较熟悉,本次安装记录下详细过程,方便后来同学少走弯路。 没想到吧?只需要一条命令行就可以安装好opencv,它会自动下载安装所需的库文件,这里显示要149个,右下角显示

    2024年02月09日
    浏览(37)
  • 详解解决织梦dede:title字数限制的两种方法

    织梦title字数怎样限制呢?相信对织梦cms熟悉的朋友来说,这真不是一个问题。当然了,有些方法并不能通用,在特殊情况下,是没有效果的哦。好了,别的不说了,给大家贴两种常用的方法吧。 织梦cms限制title字数的两种方法: 方法一:直接使用 titlelen属性 比如我想使标题

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包