蛇形矩阵求解

news2024/11/18 18:21:30

题目:

 题解思考:

这个题目我有两种解题方法:

1)利用数组,数组的下标。

2)利用等差数列的规律(这个可能比较难理解),行和列的递增规律。

注意输出格式的处理和多组输入。

数组解法

 数字递增的走向就是按箭头标注的走向。

 思路:

          可以发现第一排的走向是(0,0)

                        第二排的走向是(1,0)--->(0,1)

                        第三排的走向是(2,0)---->(1,1)---->(0,2)

      1) 上述可以发现横坐标每次移动的时候会-1纵坐标每次移动的时候会+1

      2) 也可以知道每增加一排能得出结果的数字量=上一排的数字量+1,第一排的数字量为1

我们可以利用上面提到的特征,然后再用一个数来记录当前数的值,按上面的规律循环,再把这个数不断的+1,最后就能得到一个蛇形矩阵。

代码实现:

#include<stdio.h>
int n,x[101][101];
int main() {
	while(scanf("%d",&n)!=EOF) {
		int sum=1;
		for(int i=0; i<n; i++) {
			for(int j=0; j<=i; j++) {//i是每一排能得到的数字量,在外层for循环的影响下不断的+1
				x[i-j][j]=sum;//这里是横坐标不断的-1,纵坐标不断的+1
				sum++;//记录当前的数,不断的+1
			}
		}
		for(int i=0; i<n; i++) {//最后按照指定的格式输出
			for(int j=0; j<n-i; j++) {
				printf("%d ",x[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

等差数列的规律解法

 要把行和列的递增分开来观察

行的递增规律:

按照行的递增规律,我们需要一个数来记录同行上一个递增的值。然后不断的在这个基础上+1;

 

列的递增规律(特指第一列):

按照列的递增规律,我们需要一个数来记录同列上一个数的值,然后用这个数加上当前行数。

注意一下,这里的列的递增规律是特指的第一列。

 思路:

        1)需要一个数来记录当前行数(i);

             一个数来记录当前一行的第一个数的值(a),然后a的值不断的递增输出;

             一个数来记录要不断递增的值(d);

             一个数来记录上一行的第一个值(b)。

        2)按照总结出来的行与列的递增规律,来实现蛇形矩阵的输出。注意格式的处理。

代码实现:

#include<stdio.h>
int n;
int main(){
	while(scanf("%d",&n)!=EOF){
		int a,b,c,d;
		a=b=1;
		for(int i=1;i<=n;i++){
			a=b+i-1;//当前行的第一个数的值=上一行的第一个数的值+当前行数-1
			b=a;//记录上一行的第一个数的值
			d=i+1;//记录每一列的第一个递增的值,为当前行数+1
			for(int j=i;j<=n;j++){
				printf("%d",a);
				if(j==n){//格式的处理
					printf("\n");
				}else{
					printf(" ");
				}
				a=a+d;
				d++;//每一列递增的值,不断的+1
			}
		} 
	}
	return 0;
} 

 

最后再说一句,这个题目的解法多种多样,重要的是要理解思路。😊

不要copy代码哟😛!!!要理解思路!!👍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三分钟带你手撕带头双向循环链表

数据结构——带头双向循环链表 &#x1f3d6;️专题&#xff1a;数据结构 &#x1f648;作者&#xff1a;暴躁小程序猿 ⛺简介&#xff1a;双非大二小菜鸟一枚&#xff0c;欢迎各位大佬指点~ 文章目录数据结构——带头双向循环链表前言一、什么是双向链表&#xff1f;二、带头…

图像智能处理黑科技,让图像处理信手拈来

图像智能处理黑科技&#xff0c;让图像处理信手拈来0. 前言1. 图像智能处理简介2. 图像切边增强3. PS 检测4. 图像水印去除5. 图像矫正6. 图像去屏幕纹7. 调用图像智能处理 API小结0. 前言 计算机视觉 (Computer Vision, CV) 通过研究如何令机器“看懂”世界&#xff0c;构建从…

嵌入式分享合集84

今天做的某地区的项目, 了解了一下 很是不开心 原来这几年丢的不仅是某公湖 真呵呵 一、学习单片机 如何系统地入门学习STM32&#xff1f; 假如你会使用8051 &#xff0c; 会写C语言&#xff0c;那么STM32本身并不需要刻意的学习。 你要考虑的是&#xff0c; 我可以用STM32实…

Scratch软件编程等级考试三级——20200913

Scratch软件编程等级考试三级——20200913理论单选题判断题实操幻影小猫打气球游戏猫咪抓老鼠游戏理论 单选题 1、要使以下代码运行后画出如图所示三角形风车&#xff0c;则以下代码中①②③④处应分别填入多少&#xff1f;&#xff08;&#xff09; A、3 4 90 120 B、4 3 90…

实验项目一:【文本反爬网站的分析和爬取】

一、实验目的 熟悉使用Selenium、Pyppeteer等工具爬取网站基本内容&#xff0c;通过分析具有文本反爬技术网站&#xff0c;设计爬取策略来获取文本正确的内容。 二、实验预习提示 安装Python环境 &#xff08;Python 3.x&#xff09;&#xff1a;Pychram社区版Anaconda为Pytho…

[SpringBoot] YAML基础语法

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

四线法与电桥

目录&#xff1a; 一、基本电桥电路 二、开尔文四线检测 三、惠斯通与开尔文电桥 1、电阻桥定义解释 2、电阻桥相关计算 3、开尔文双电桥 4、电阻桥的应用 --------------------------------------------------------------------------------------------------------…

java中的垃圾回收算法与垃圾回收器

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Swift学习笔记笔记(五) Swift扩展协议类

一、 实验目的&#xff1a; 1.掌握Swift扩展型 2.掌握Swift协议 3.掌握Swift类 二、实验原理&#xff1a; 1.Swift扩展的定义 2.Swift协议的定义 3.Swift类的定义 三、实验步骤及内容&#xff1a; 1.方法 //实例方法 class Website { var visitCount 0 func visiting(){…

【LC】二叉树应用强化OJ

✨博客主页: 心荣~ ✨系列专栏:【LeetCode/牛客刷题】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录1. 检查两颗树是否相同2. 另一颗树的子树3. 二叉树最大深度4. 判断—颗二叉树是否是平衡二叉树5. 对称二叉树6. 二叉树的构建及遍历7. 二叉树的分层遍历8. 给定一个二叉树…

JAVAweb第一次总结作业

1.什么是html HTML的全称为超文本标记语言(Hyper Text Markup Language)&#xff0c;是一种标记语言。它包括一系列标签&#xff0c;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。 HTML文本是由HTML命令组成的描述性文本&…

【Python】import模块的多种操作

前言 记录一下关于Python在导入模块时候一些操作~ 知识点&#x1f4d6;&#x1f4d6; Python魔法方法&#xff1a;__all__ Python内置模块&#xff1a;importlib 实现 指定导出的变量 当你在使用 from xxx import * 时候&#xff0c;可以通过 __all__ 来指定可被导出的变…

每天五分钟机器学习:通过学习曲线判断模型是过拟合还是欠拟合

本文重点 本节课程我们学习使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线其实就是训练误差和验证误差关于样本m的曲线,我们将通过学习曲线来判断该算法是处于高偏差问题,还是处于高方差问题。 高偏差问题(欠拟合) 注意:这个m表示训练集数据样本…

王二涛研究组揭示丛枝菌根共生与根瘤共生的协同进化机制

2021年&#xff0c;中国科学院分子植物科学卓越创新中心王二涛团队在《Molecular Plant》发表了“Mycorrhizal Symbiosis Modulates the Rhizosphere Microbiota to Promote Rhizobia Legume Symbiosis”研究论文&#xff0c;该研究通过定量微生物组、微生物共发生网络及微生物…

mac for m1(arm):安装redis的四种方式(本机安装、homebrew安装、虚拟机安装、docker安装)

0. 引言 redis作为当今最常用的非关系型数据库&#xff0c;被广泛应用于数据缓存场景。而mac m1采用arm芯片&#xff0c;使得众多软件安装成为问题&#xff0c;今天我们来看mac m1如何安装redis 1.本机安装redis 1、下载redis安装包&#xff1a;https://redis.io/download/ …

subplots()--matplotlib

1. 函数功能 成一个画布和若干子区。2. 函数语法 matplotlib.pyplot.subplots(nrows1, ncols1, *, sharexFalse, shareyFalse, squeezeTrue, subplot_kwNone, gridspec_kwNone, **fig_kw)3. 函数参数与示例 参数含义nrows, ncols画布被分成的行、列数squeeze布尔值&#xf…

【畅购商城】用户登录

用户登录 构建页面&#xff1a;Login.vue步骤一&#xff1a;创建Login.vue步骤二&#xff1a;绘制通用模块<template> <div> <TopNav></TopNav> <div style"clear:both;"></div> <HeaderLogo></HeaderLogo> <div…

嵌入式开发--CubeMX使用入门教程

嵌入式开发–CubeMX使用入门教程 CubeMX简介 传统的单片机开发时&#xff0c;需要针对片上外设做各种初始化的工作&#xff0c;相当麻烦。 CubeMX是ST公司出品的一款图形化代码生成工具&#xff0c;通过图形化界面&#xff0c;可以非常直观的配置好各种片上外设&#xff0c;时…

一个方便IO单元测试的C#扩展库

对于我们.Net程序员&#xff0c;System.Web.Abstractions我们都非常熟悉&#xff0c;主要作用于Web可以实现单元测试&#xff0c;他是在.Net framework 3.5 sp1开始引入的,很好的解决项目表示层不好做单元测试的问题&#xff0c;这个库所有类都是Wrapper/Decorator模式的。今天…

[SpringBoot] Spring Boot注册Web原生组件/拦截器HandlerInterceptor

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…