2026.3.8oj总结 📅 发布时间:2026/7/5 3:10:00 👁️ 浏览次数: 1.稀疏矩阵问题描述今天明明学到了什么叫做矩阵但他发现要将一个矩阵输入进电脑是一件很麻烦的事。特别是有些矩阵很大且大部分元素都是0我们称这类矩阵为稀疏矩阵。 于是明明发明了一种简单的表示方法只指出矩阵中非零元素来表示该矩阵。例如一个矩阵0 0 0 52 0 0 00 1 0 00 0 4 0可以表示成1 4 52 1 23 2 14 3 4但明明又开始力不从心了于是再一次想到了你...明明的问题可以归结为试编程将一个稀疏矩阵a转换成只存放非零元素的矩阵b即找出每个不是0的元素按从左到右从上到下的顺序输出其所在的行和列以及它的值。总结设置一个二维矩阵遍历碰到非零的就输出相对应的结果。注意是每一个非0元素一行#includeiostreamusing namespace std;int main() {int M, N;bool firstcase true;while (cin M N) {if (!firstcase) {cout endl;}firstcase false;int arr[21][21];for (int i 0;i M;i) {for (int j 0;j N;j) {cin arr[i][j];}}for (int i 0;i M;i) {for (int j 0;j N;j) {if (arr[i][j] ! 0) {cout i 1 j 1 arr[i][j] endl;}}}}}2.矩阵转换问题描述明明是一个很聪明的孩子学什么东西都很快。但是他也有个缺点就是不愿意做重复的劳动往往学会一样东西以后就不太愿意再去碰它。有一天明明在数学课上学了矩阵的转换即有一个r×r的矩阵把矩阵中的数以左上到右下的对角线的方式进行交换然后形成一个新的矩阵。例如有个3×3的矩阵如下1 2 34 5 67 8 9通过以左上到右下的对角线交换后形成了一个新的矩阵1 4 72 5 83 6 9明明很快就学会了然后自己动手做了几个类似的转换。但是课后老师布置了很多矩阵转换的作业让同学回家练习这就使明明很厌烦了觉得自己已经学会了就没有再练习的必要了。于是明明就请你帮个忙帮他写一个程序来计算矩阵的交换帮他完成老师布置的作业。明明的问题可以归结为有一个r×r的矩阵把矩阵中的数以左上到右下的对角线的方式进行转换然后输出转换后的矩阵。总结注意不能直接交换会导致数据丢失或者覆盖。设置一个临时数组储存注意最后一个数字后面没有空格。#includeiostreamusing namespace std;int main() {int r;bool firstcase true;while (cin r) {if (!firstcase) {cout endl;}firstcase false;int arr[10][10];int swap[10][10];for (int i 0;i r;i) {for (int j 0;j r;j) {cin arr[i][j];}}for (int i 0;i r;i) {for (int j 0;j r;j) {swap[i][j] arr[j][i];}}for (int i 0;i r;i) {for (int j 0;j r;j) {cout swap[i][j] ;if (j r-1) cout ;}cout endl;}}}3.魔方阵问题描述在一次数学课上明明的老师讲了一种非常有趣的方阵称之为三阶魔方阵。它是一个三行三列由1、2、3、……8、9九个数字共同构成且它每行、每列、两对角线之和均相等于是一个合法的三阶魔方阵就形成了以下的方阵8 1 63 5 74 9 2富有钻研精神的明明回家后马上就对三阶魔方阵进行研究。他总结出了5条n阶魔方阵的规律(n为奇数)如下1 将“1”放在第一行最上面一行中间一列2 从“2”开始直到n*n为止各数依次按下列规则存放每一个数存放的行的行数比前一个数的行数减1每一个数存放的列的列数比前一个数的列数加1即前一个数的右上方。3 如果上一数的行数为1则下一个数的行数为n指最下面一行4 当上一个数的列数为n时下一个数的列数应为1指最左一列5 如果按上面规则确定的位置上已有数或上一个数是第一行第n列时则把下一个数放在上一个数的下面。有了以上的方法明明就可以轻易地构造出任意的n阶魔方阵。例如构造3阶魔方阵的过程如下先将1放在第一行的中间一列放1参考规则1* 1 ** * ** * *放2参考规则3* 1 ** * ** * 2放3参考规则4* 1 *3 * ** * 2放4参考规则5* 1 *3 * *4 * 2放5参考规则2* 1 *3 5 *4 * 2放6参考规则2* 1 63 5 *4 * 2放7参考规则5* 1 63 5 74 * 2放8参考规则48 1 63 5 74 * 2放9参考规则38 1 63 5 74 9 2但是随着n的不断增大构建一个n阶魔方阵所花的精力就越多。于是明明就请你帮忙帮助他用程序来构建n阶魔方阵。明明的问题可以归结为给你一个阶数n请你按照题目中描述的方法构造出n阶魔方阵。总结首次设置1的位置在循环中找到正确的行列位置。对于规则5在发现下一个位置不是0时要先退回原来的位置进行计算。#includeiostreamusing namespace std;int main() {int n;bool firstcase true;while (cin n) {if (!firstcase) {cout endl;}firstcase false;int arr[20][20]{0};arr[0][n/2] 1;int row 0;int col n / 2;for (int num 2;num n * n;num) {int prerow row;int precol col;row (row - 1n) % n;col (col 1) % n;if (arr[row][col] ! 0)//规则5{row prerow;col precol;row (row 1) % n;}arr[row][col] num;}for (int i 0;i n;i) {for (int j 0;j n;j) {cout arr[i][j] ;if (j n - 1) cout ;}cout endl;}}}4.最大效益问题描述给你一张5行5列的效益表表中的数字均为大于等于0的整数要求在这张表中选出5个数字使这5个数字的和最大。注这5个数字分别来自表中的不同行不同列即同一行只能选择一个数字同一列也只能选择一个数字。总结首先将每一行每一列都设置为未访问然后遍历数组选出一个最大的数字把这个数字的行列设置为已访问。直到选择出来的数字个数到5就结束。#includeiostreamusing namespace std;int main() {int arr[5][5];while (cin arr[0][0]) {for (int i 0;i 5;i) {for (int j 0;j 5;j) {if (i 0 j 0) continue;cin arr[i][j];}}bool rowuse[5] { false };bool coluse[5] { false };int maxsum 0;int count 0;while (count 5) {int maxdigit 0;int maxrow -1;int maxcol -1;for (int i 0;i 5;i) {if (rowuse[i]) continue;//继续1234for (int j 0;j 5;j) {if (coluse[j]) continue;if (arr[i][j] maxdigit){maxdigit arr[i][j];maxrow i;maxcol j;}}}//标记选中的行列if (maxrow ! -1 maxcol ! -1) {rowuse[maxrow] true;coluse[maxcol] true;maxsum maxsum maxdigit;count;}}cout maxsum endl;}}5.螺旋方阵问题描述给你一个正整数n请你按题目描述中所述的方法构造出n阶的螺旋方阵。总结设置4个边界当到达边界时就螺旋。每次到达边界时要把边界做相对应的变化。#includeiostreamusing namespace std;int main() {int n;bool firstcase true;while (cin n){if (!firstcase) {cout endl;}firstcase false;int arr[10][10] { 0 };int top 0;int bottom n - 1;int left 0;int right n - 1;int num 1;while (num n * n) {for (int i left;i right;i) {//从左到右arr[top][i] num;num;}top;for (int i top;i bottom;i)//从上到下{arr[i][right] num;num;}right--;for (int i right;i left;i--) {//从右到左arr[bottom][i] num;num;}bottom--;for (int i bottom;i top;i--) {//从下到上arr[i][left] num;num;}left;}for (int i 0;i n;i) {for (int j 0;j n;j) {cout arr[i][j];if (j n - 1) cout ;}cout endl;}}}6.求小数位数个数问题描述明明最近在一家软件公司实习公司分配给他一个任务要他写一个小程序这个程序的功能是求出一个浮点数的小数部分的长度。例如程序输入1.1则输出1程序输入1.11则输出2明明觉得这个非常简单花了不到5分钟的时间就把程序给写出来了然后就把程序交给了测试员测试。但是没有想到的是经过测试员的测试发现了一大堆的错误返回的结果很多都是不对的这个令明明相当的不解始终想不通自己的程序错在哪里。你是一名经验丰富的程序员明明把这个问题来求助于你明明和你说了他的想法你一听就明白明明错在了哪里原来明明使用double型来存放浮点数但是由于double型的精度问题不可能把所有的小数都精确的保存好如果小数位数很长就会出错。你发现了问题。现在请你写出正确的程序。 明明的问题可以归结为给你一个浮点数请你求出这个浮点数的小数位数。总结使用字符串在字符串中找到小数点的位置并记录小数位数个数就是字符串的长度-小数点的位置-1.因为索引是从0开始的。#includeiostream#includestringusing namespace std;int main() {string n;while (cin n) {size_t index n.find(.);if (index string::npos){cout 0 endl;}else {int sum n.length() - index-1;cout sum endl;}}}7.进制转换问题描述输入一个十进制数将其化成N进制数输出2≤N≤16)。 输出结果时大于等于10的数字用字母代替A代表10B代表11以此类推。总结进制转换先初始化结果字符串对于输入的数字取余数当余数小于10时就将数字转换为字符并且拼接到字符串前面当余数10时余数-10再转成字符串并且拼接到字符串前面。#includeiostream#includestringusing namespace std;string Basertran(int n,int base) {string digit ;if (n 0) return 0;while (n 0) {int a n % base;if (a 10) {digit char(0 a) digit;}else {digit char(Aa-10) digit;}n n / base;}return digit;}int main() {int m, N;while (cin m N) {string resultBasertran(m, N);cout result endl;}}8.方块转换问题描述一块N x N1N10正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式#1转90度图案按顺时针转90度。#2转180度图案按顺时针转180度。#3转270度图案按顺时针转270度。#4反射图案在水平方向翻转形成原图案的镜像。#5组合图案在水平方向翻转然后按照#1-#3之一转换。#6不改变原图案不改变。#7无效转换无法用以上方法得到新图案。如果有多种可用的转换方法请选择序号最小的那个。比如转换前-----转换后-----这种转换采取#1按顺时针转90度即可。注意图案中的字符“”和“-”在转90度后还是“”和“-”。不要认为“-”转90度后变成“|”。输入说明第一行 单独的一个整数N。第二行到第N1行 N行,每行N个字符不是就是-这是转换前的正方形。第N2行到第2*N1行 N行,每行N个字符不是就是-这是转换后的正方形。输出说明单独的一行包括1到7之间的一个数字在上文已描述表明需要将转换前的正方形变为转换后的正方形的转换方法。总结旋转180就是旋转90两次。注意在旋转和翻转时不能修改原图要创建新的图案来存取结果因为后面还要用原图来做其他转换。函数参数要用const引用因为函数返回的临时结果要用const才能传进去。#includeiostream#include vector#includestringusing namespace std;int N;//判断两个图形是否相等bool isCmp(const vectorstring a, const vectorstring b) {for (int i 0;i N;i) {if (a[i] ! b[i]) {return false;}}return true;}vectorstringr90( const vectorstring p) {vectorstringp1(N,string(N, ));for (int i 0;i N;i) {for (int j 0;j N;j) {p1[j][N - 1 - i] p[i][j];}}return p1;}vectorstringflip(const vectorstring p) {vectorstring p2 p;for (int i 0;i N;i) {for (int j 0;j N/2;j) {swap(p2[i][j], p2[i][N - j - 1]);}}return p2;}int main() {vectorstringbefore, after;while (cin N) {before.resize(N);after.resize(N);for (int i 0;i N;i) {cin before[i];}for (int i 0;i N;i) {cin after[i];}auto r1 r90(before);auto r2 r90(r1);auto r3 r90(r2);auto f flip(before);if (isCmp(r1, after)) cout 1 endl;else if (isCmp(r2, after))cout 2 endl;else if (isCmp(r3, after)) cout 3 endl;else if (isCmp(f, after)) cout 4 endl;else if (isCmp(r90(f), after) ||isCmp(r90(r90(f)), after) ||isCmp(r90(r90(r90(f))), after))cout 5 endl;else if (isCmp(before, after)) cout 6 endl;else cout 7 endl;}}
用秃鹰优化算法打造你的LSSVM预测模型 利用BES秃鹰优化算法优化LSSVM做多特征变量输入,单个因变量输出的拟合预测模型。 程序语言为matlab。 直接替换excel数据就可以用。在数据科学的世界里,总有一些算法像秃鹰一样敏锐,能够从纷繁复杂的数据中发现最优解。今天,我们就… 2026/7/5 3:04:50
设备预测性维护平台:数字化转型的必要选择 在工业4.0和智能制造浪潮下,设备预测性维护平台已成为企业提升生产效率、降低运维成本的关键工具。传统的事后维修和定期维护模式已无法满足现代工业需求,而预测性维护通过实时监测、数据分析与AI算法,能精准预测设备故障,大幅减少… 2026/5/17 10:24:48
环形链表Ⅱ 要求: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链表。 思路:编程思想:快慢指针法。快指针每次走两步,慢指针每次走一步。如果链表有环&… 2026/5/17 10:24:49
django中实现密码加密 在utils_app\utils\ 中新建encryption.py# md5加密 import hashlib from django.conf import settings def md5(data):obj_md5hashlib.md5(settings.SECRET_KEY.encode(utf-8))obj_md5.update(data.encode(utf-8))return obj_md5.hexdigest()在视图中使用from utils_app… 2026/7/5 3:08:56
口碑好的区域教育一体化管理平台哪个更值得选择 在当前信息化时代,越来越多的学校和教育局开始重视智慧校园的建设。一个优秀的区域教育一体化管理平台,不仅能提升学校的管理效率,还能促进教学质量和学生发展。那么,在众多的平台中,哪一个更值得选择呢?本… 2026/7/5 3:08:56
欧洲议会PEGA委员会成员遭“飞马”攻击,凸显雇佣兵间谍软件对民主进程的威胁 关键发现前欧洲议会议员斯特利奥斯库洛格鲁在PEGA委员会任职期间,多次遭NSO集团“飞马”间谍软件攻击,攻击者或获取机密文件与审议内容。库洛格鲁在关键时期被感染,间谍软件可能获取非公开信息,违反欧盟议会保密和特权框架。目前不… 2026/7/5 3:06:55
PyTorch RNN 歌词生成实战:周杰伦数据集训练250轮,困惑度降至1.02 PyTorch RNN 歌词生成实战:从数据预处理到模型优化的完整指南1. 项目概述与目标在自然语言处理领域,循环神经网络(RNN)因其出色的序列建模能力而广受青睐。本文将带您实现一个基于PyTorch的RNN歌词生成器,使用周杰伦歌… 2026/7/5 3:06:55
2026年靠谱AI论文软件全攻略(含保姆级操作教程) 以下是当前学术圈口碑TOP的6款AI写论文工具,覆盖从选题、开题到降重、答辩的论文全流程,剔除冗余工具,每款均附分步骤实操指南场景适配技巧,重点突出中文论文适配性,新手也能快速上手,效率翻倍。一、全流程… 2026/7/5 3:04:55
直身蝴蝶杯,难的是挺而不呆 旅行杯和摆件不一样。 它要拿得起,也要放得稳。 杯身如果太直,容易显得笨。 所以看这类杯子,关键不是装饰多不多,而是直身能不能站住。这件蝴蝶杯的杯身是直的。 直身上收不多,但底部压得住。 它没有因为高而显得飘&am… 2026/7/5 3:02:54
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36