二维数组中各个三角形的关系,三角形的打印同理

news2025/1/18 9:01:47

给你一个n*n矩阵,按照顺序填入1到n*n的数,例如n=5,该矩阵如下

(这是一个题目,但是我这个写法在牛客刷题中是不能正确的得分的,但是我找到了各个关系,然后分享给大家)

 然后再对其进行求和处理,是对右侧图的所有的和进行处理

那么我们解决问题要有以下几步

  • 在二维数组中将数字1-----n存到二维数组中
  • 找到他们之前的关系,也就是三角形的输入
  • 然后在去求和

首先是来进行数据存到数组中,二维数组,行*列=总数 那么就提前定义一个数字,然后在自增,将其存到二维数组中吧那就是这个样子的

for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            arr[i][j] = num++;
        }
    }  //前提给num的初始值是1,然后可以执行

那么其实说到底就是第二步是最重要的需要找到四个关系 

  其实应该是5*5的这里(这里数组都是从0开始)

    for (int i = 0; i < n / 2; i++) {
        for (int j = 0; j < n / 2 - i; j++) {
            arr[i][j] = 0;
        }  //左上角
    }

 规律是:首先第一个是就在前两行所以小于n/2 也就是2 那么行就是 0 1

看 列了先输出是两个,然后变成了一个,那么想想这样要和谁有关呢,当然是行,所以在你的可变范围内就变成了n/2-i  变化范围是 2-0 =2  2-1=1    所以就是刚好满足  2 1 是不是很妙

    for (int i = 0; i < n / 2; i++) { //3 4 列
        for (int j = n / 2 + 1 + i; j < n; j++) {
            arr[i][j] = 0;
        }  //右上角
    }

第二个部分 :

行还是不变的就是 1 -2 行,但是列缺变成了3-4 这时候还是要找关系的,第一行的时候是先是2

然后第二行的时候是1  然后行是1 然后行是2 那么这个关系就是n / 2 + 1 + i;开始,因为第一行的时候他的数值是 3 4 然后第二行的时候,i为1 了然后就是4 所以只能输出一个


    for (int i = n / 2 + 1; i < n; i++) {  //3-- 4 行
        for (int j = 0; j < i - n / 2; j++) { // 1--2
            arr[i][j] = 0; //左下角
        }
    }

第三部分:

这时候看到了那个行数已经改变了,变成了3 4 ,但是你的列的输出是在1 2,而且需要归零的是i30 和i 40 i41 开始输出的是一个然后输出的是两个这个关系怎么找呢很明显方然是和行有关,毕竟他从三变成了四,而你的输入是三行是1 四行是2 中间差了n/2所有这就是 i - n/2,然后进行输出


    for (int i = n / 2 + 1; i < n; i++) {  //3-- 4 行
        for (int j = n / 2 + (n - i); j < n; j++) { // 1--2
            arr[i][j] = 0; //刚开始是1 ---2 
        }
    } //      

第四部分也就是最后一个格格的输出

自然和前边一样时从行不变是在 3 4 但是输是在右下侧,输出的顺序是1 2个那么怎么开始呢

其实这个时候你不能去限制上限,只能去改变下限 自然开始是改变上限,也就是你的输入模式

那么怎么做呢,开始的时候是输入第三行是一个数字,第四行是2 个那么和3 4 行有关系吗,当然是有关系的那么关系就是在 2+(5-3) <4  然后是2+(5-4) <4 这个就有俩了所以关系就是--------:n / 2 + (n - i)

说明:我说的行和列是 0---4

输出样例:

 这是那段代码,课自行参考

#include <iostream>
#include<iomanip>
int func(int x);
using namespace std;
int main()
{
	int arr[50][50] = { 0 };
	int con, n, num = 1, sum = 0, m, s = 0;
	cin >> con; //组
	
	while (con > 0) {
		cin >> n; //数组			
		m = func(n);
		cout << m<<endl;
		con--;
	}



	return 0;
}
int func(int x)
{
	int arr[50][50] = { 0 };
	int n, num = 1, sum = 0;
	//cin >> n;
	n = x;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			arr[i][j] = num++;
		}
	} //输入了n行n列的数组
	for (int i = 0; i < n / 2; i++) {
		for (int j = 0; j < n / 2 - i; j++) {
			arr[i][j] = 0;
		}  //左上角
	}

	for (int i = 0; i < n / 2; i++) { //3 4 列
		for (int j = n / 2 + 1 + i; j < n; j++) {
			arr[i][j] = 0;
		}  //右上角
	}
	for (int i = n / 2 + 1; i < n; i++) {  //3-- 4 行
		for (int j = 0; j < i - n / 2; j++) { // 1--2
			arr[i][j] = 0; //左下角
		}
	}
	for (int i = n / 2 + 1; i < n; i++) {  //3-- 4 行
		for (int j = n / 2 + (n - i); j < n; j++) { // 1--2
			arr[i][j] = 0; //刚开始是1 ---2 
		}
	} //          3    
	//输出
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			sum += arr[i][j];
		}
	}
	return sum;

}

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

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

相关文章

在IntelliJ IDEA中使用.ignore插件忽略Git不必要提交的文件

第一步&#xff1a; 点击File->Settings&#xff0c;在左侧菜单找到Plugins&#xff0c;点击搜索栏搜索.ignore&#xff0c;点击Install 第二步&#xff1a; 重启idea -->在项目上右键->New ->.ignore file ->.gitignore file(Git) 第三部&#xff1a; 在项目中…

http协议的简单总结

目录 1.http协议的特性 2.http协议的请求 3.get请求和post请求的区别 4.http协议的响应 1.http协议的特性 http协议是建立在TCP/IP协议之上应用层协议&#xff0c;默认端口为80,8080 http协议的的特点是无状态&#xff0c;无连接&#xff08;短连接&#xff09; 2.http协…

【面试题】京东面试查漏补缺

目录一&#xff1a;笔试题1.如何获取URL中的参数方法一方法二2.怎么平铺多维数组方法一方法二&#xff1a;递归方法三&#xff1a; flat() 和 flatMap()二&#xff1a;面试题1.promise相关问题2.vue nextTick的作用和原理3.http状态码304缓存相关问题4.其他常规问题省略wh零售事…

在线学习(online learning)——Chapter 2 Problem Formulations and Related Theory

在线学习(online learning)——Chapter 2 Problem Formulations and Related Theory 本章中&#xff0c;我们将首先给出一个经典的在线学习问题的形式化描述&#xff0c;即在线二分类(online binary classification)&#xff0c;然后介绍统计学习理论、在线凸优化和博弈论的基…

Zabbix“专家坐诊”第179期问答汇总

欢迎大家加入乐维社区zabbix问答专栏&#xff0c;除了在论坛发帖求问外&#xff0c;还可以在QQ群里交流进步&#xff0c;并且每周三我们会进行免费的技术答疑活动。 问题一&#xff1a; Q&#xff1a;Zabbix alert syncer processes more than 75% busy&#xff0c;这个告警&…

Live800:优秀的在线客服系统配置哪些功能模块?

在线客服系统是企业客服解决客户疑惑的软件系统&#xff0c;是企业统一对外联系的窗口。为了提升客户服务质量&#xff0c;提高客服人员工作效率&#xff0c;越来越多的企业配置了在线客服系统。那一款优秀的在线客服系统需要配置哪些功能模块呢&#xff1f;一、在线沟通模块在…

简明精要Android IPC通信

目录 一、Android应用层IPC通信方式 二、IPC通信数据拷贝次数 这里指的从应用层角度&#xff0c;IPC通信方式。简单记录一下。 一、Android应用层IPC通信方式 Bundle&#xff1a;四大组件中的三大组件&#xff08;Activity、Service、Receiver&#xff09;都是支持在Intent中…

MySQL学习之一条SQL更新语句的执行

文章目录前言一、MySQL更新操作大致流程二、redo log介绍三、binlog介绍四、MySQL更新操作的具体流程前言 今天我们通过一条SQL更新语句&#xff0c;了解MySQL的日志系统 一、MySQL更新操作大致流程 更新数据库表上的操作&#xff0c;跟这个表有关的查询缓存会失效。这条语句…

MyBatisPlus(MP)学习记录(分页查询的开启+日志打印配置+乐观锁+映射匹配+字段匹配和表名匹配+null值判定+代码生成器等等)

MP介绍&#xff08;官网链接&#xff09; MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 前言 本篇文章展示的MP教学中涉及到的版本如下&#xff1a; IDE…

Unity 之 Addressable可寻址系统 -- 可寻址系统概念介绍 -- 入门(一)

可寻址系统面板概念 -- 入门&#xff08;一&#xff09;一&#xff0c;可寻址系统概念介绍1.1 官方话术1.2 几个概念二&#xff0c;可寻址系统目录介绍2.1 导入工程2.2 目录介绍概述&#xff1a;本片文章带大家了解可寻址系统的相关概念&#xff0c;为大家介绍可寻址系统导入方…

Elasticsearch:如何在 Docker 上运行 Elasticsearch 8.x 进行本地开发

对于 Elasticsearch 的新主要版本 (8.x.x)&#xff0c;有关于在 Docker 上运行 Elasticsearch 和 Kibana 的重大更新。 过去适用于以前版本的 Docker 和 Docker Compose 的命令和语法需要更新才能适用于最新版本。 在这篇文章中&#xff0c;我们将介绍如何使用 Docker 和 Docke…

Hudi系列5:Hudi与Spark集成

文章目录一. Spark操作Huid概述二. Spark-Shell方式三. pyspark方式四. SparkSQL方式参考:一. Spark操作Huid概述 Hudi各个版本支持Spark版本情况: 将hudi集成spark的jar包&#xff0c;放到spark的jars目录 -- 同步到其它节点 cd /home/hudi-0.12.0/packaging/hudi-spark-b…

【设计模式】UML类图

设计模式学习之旅(一) 查看更多可关注后查看主页设计模式DayToDay专栏 一.UML概述 统一建模语言&#xff08;Unified Modeling Language&#xff0c;UML&#xff09;&#xff0c;是一种用于软件系统分析和设计的语言工具。特点是简单、统一、图形化、能表达软件设计中的动态与静…

Matlab论文插图绘制模板第72期—金字塔图

前段时间&#xff0c;有朋友觉得一篇文章里的插图看着不错&#xff0c;问Matlab能不能实现&#xff1a; 想了想&#xff0c;Matlab中并没有现成的画图代码。 但本质上&#xff0c;这种图其实就是横向柱状图的变体&#xff0c;而横向柱状图的绘制模板之前有分享过&#xff1a; …

Java多线程:线程的优先级 || 线程的中断 || 线程的分类 || 线程的定时器

Java多线程&#xff1a;线程的优先级 || 线程的中断 || 线程的分类 || 线程的定时器 每博一文案 正如村上春树所说&#xff1a;“当暴风雨过去&#xff0c;你不会记得自己是如何度过的&#xff0c;你甚至不确定&#xff0c;暴风雨是否真正结束了&#xff0c; 但你已不再是当初…

分布式唯一ID的几种生成方案,一次性全掌握!

上一篇文章&#xff0c;我们聊了一下分库分表相关的一些基础知识&#xff0c;具体可以参见&#xff1a;《用真实业务场景告诉你&#xff0c;高并发下如何设计数据库架构&#xff1f;》。 这篇文章&#xff0c;我们就接着分库分表的知识&#xff0c;来具体聊一下全局唯一id如何…

Flutter 基础-上

一、初始化项目 Material Design (Google 推出的前端UI 解决方案) 官网: https://www.material.io/中文网: https://material-io.cn/ Flutter 中一切内容都是组件(Widget) 无状态组件(StatelessWidget)有状态组件(StatefulWidget) 二、app结构 MaterialApp title (任务管理器…

【VScode技巧】:platformio部署ESP32Cam开发板

学习目标&#xff1a; 前几天用Arduino开发了ESP32Cam&#xff0c;实现了人脸识别的功能&#xff0c;今天无聊想了想ESP32Can也可以在VScode的Platformio中使用&#xff0c;于是就试着配置了一下。以下是配置环境的过程&#xff0c;谢谢大家观看。 正所谓工欲善其事&#xff0c…

【零基础】学python数据结构与算法笔记10

文章目录前言57.链表介绍58.链表的创建和遍历59.链表的插入和删除60.双链表61.链表总结62.哈希表62.哈希表实现64.哈希表应用总结前言 学习python数据结构与算法&#xff0c;学习常用的算法&#xff0c; b站学习链接 57.链表介绍 链表是由一系列节点组成的元素集合。每个节点…

React配置文件(五) 配置less

代码如下: module.exports { webpack: override( addLessLoader({ lessOptions: { javascriptEnabled: true, modifyVars: { primary-color: #1DA57A }, }, }), adjustStyleLoaders(({ use: [, , postcss] }) > { const postcssOptions postcss.options postcss.options …