- 博客(117)
- 收藏
- 关注
原创 东华OJ-进阶题-19-排队打水问题(C++)
摘要: 该问题要求合理安排n个人在r个水龙头打水,使得总花费时间最少。采用贪心算法,将打水时间升序排序,并使用小顶堆(优先队列)管理水龙头的空闲状态。每次选择最早空闲的水龙头分配当前最短的打水任务,累计各人等待时间。例如输入3人2个水龙头,时间1、2、3时,最优安排总时间为7。通过优先队列高效实现最短作业优先策略,确保全局最优解。
2026-03-18 22:19:47
33
原创 东华OJ-进阶题-20-产生数(C++)
题目要求计算一个大整数n经过k个变换规则(每位数字可变换多次)后能产生的不同整数个数。通过分析每个数字可能的变换情况,采用BFS统计每个数字可达的数字总数(包括自身),然后将各位数字的可达数相乘得到结果。由于结果可能很大,需要使用大整数乘法处理。 关键步骤: 使用BFS计算每个数字0-9的可达数字总数 将输入数字各位的可达数相乘 使用数组存储大整数乘法结果 倒序输出最终结果 输入示例"1234 3"时,计算过程为:数字1、2、3、4的可达数分别为1、3、3、1,相乘得到9,即为输出结果。
2026-03-17 21:32:30
38
原创 东华OJ-进阶题-13-2n皇后问题(C++)
本文解决了一个n×n棋盘上放置n个黑皇后和n个白皇后的组合问题。要求两种皇后互不冲突(不在同一行、列或对角线),且只能放在棋盘标记为1的位置。通过回溯算法,先递归放置黑皇后,再放置白皇后。使用多个标记数组来记录已占用的列和对角线状态,确保放置的有效性。代码实现了这一过程,最终输出所有可能的放置方法总数。对于给定的4×4棋盘示例,由于第一行存在0位置限制,导致无解,输出结果为0。该算法适用于n≤8的规模,通过合理的状态标记和回溯策略高效求解。
2026-03-15 22:45:42
428
原创 东华OJ-进阶题-10-分解质因数(C++)
本文介绍了如何对给定区间[a,b]内的所有整数进行质因数分解。算法首先判断每个数是否为质数,若是则直接输出;若是合数则分解为质因数的乘积形式。实现中通过遍历可能的因数,不断分解并更新剩余数,直到剩余数为质数时结束分解。代码使用isPrime函数判断质数,主循环处理区间内每个数的分解过程,并按要求格式输出结果。示例输入3-10的输出展示了正确的分解格式,如8=222等。该算法适用于2≤a≤b≤10000的范围,能正确高效地完成质因数分解任务。
2026-03-15 22:32:02
35
原创 东华OJ-进阶题-12-时间转换(C++)
摘要: 该程序将给定的秒数转换为“时:分:秒”格式。输入为一个整数t(0≤t≤86399),程序通过整除和取余运算计算出小时、分钟和秒数,并以无前导零的格式输出。例如,输入5436秒,输出为“1:30:36”。代码简洁高效,直接利用数学运算完成时间转换。
2026-03-15 22:29:12
27
原创 东华OJ-进阶题-11-字符串对比(C++)
该题目要求判断两个字符串之间的关系属于四种情况中的哪一种。通过比较字符串长度、字符是否完全相同(区分大小写)或仅在不区分大小写时相同来确定关系类别。代码实现先检查长度,若不等返回1;若完全相同返回2;再逐个字符比较(不区分大小写),若有不符返回4;否则返回3。输入输出样例展示了字符串"BEIjing"和"beiJing"的关系为类别3。注意测试用例可能存在异常情况。
2026-03-15 22:27:21
17
原创 东华OJ-进阶题-9-矩阵乘法(C++)
本文介绍了如何计算N阶矩阵的M次幂。程序首先读取矩阵的阶数N和幂数M,然后输入矩阵元素。对于M=0的情况,输出单位矩阵;对于M=1,输出原矩阵;对于M>1的情况,通过三重循环实现矩阵乘法,逐次计算矩阵的幂次。代码使用了vector存储矩阵,并实现了矩阵重置和结果输出的功能。关键点在于正确处理边界条件(M=0和M=1)以及实现高效的矩阵乘法运算。该算法时间复杂度为O(N³M),适用于小规模矩阵计算(N≤30)。
2026-03-14 16:32:30
249
原创 东华OJ-进阶题-8-矩形面积交(C++)
摘要: 该程序计算两个平行于坐标轴的矩形的交集面积。通过输入两个矩形的两对相对顶点坐标,首先确定每个矩形的最小和最大x、y坐标。然后计算两个矩形在x和y方向上的重叠区域:交集矩形的左下角坐标为两矩形最小坐标的最大值,右上角坐标为两矩形最大坐标的最小值。若存在重叠区域(即a1 < a2且b1 < b2),则计算面积并保留两位小数输出;否则输出0.00。例如,输入矩形(1,1)-(3,3)和(2,2)-(4,4)时,交集面积为1.00。
2026-03-14 16:29:50
20
原创 东华OJ-进阶题-7-Sine之舞(C++)
摘要: 题目要求根据给定整数N,生成特定表达式Sn。An由嵌套的正弦函数构成,符号交替变化;Sn则是An与递减数字的组合,外层嵌套括号。输入N=3时,输出为((sin(1)+3)sin(1+sin(2))+2)sin(1+sin(2-sin(3)))+1。解题关键在于发现An的符号规律和Sn的括号嵌套模式,通过循环逐层构建字符串实现。代码使用向量存储An,再拼接成Sn,最后输出结果。
2026-03-14 16:25:50
247
原创 东华OJ-进阶题-6-龟兔赛跑预测(C++)
这篇文章摘要介绍了兔子和乌龟赛跑问题的模拟程序。程序根据输入的兔子速度(v1)、乌龟速度(v2)、兔子领先阈值(t)、休息时间(s)和赛道长度(l),模拟比赛过程并输出结果。程序通过逐秒计算两者位置,当兔子领先超过t米时会休息s秒,直到任一选手到达终点。输出包含获胜者(T/R/D)和所用时间。代码使用循环逐秒模拟,处理休息逻辑并检测终点到达情况,最后比较结果输出。输入输出示例展示了不同参数下的比赛结果。
2026-03-14 16:20:54
36
原创 东华OJ-进阶题-5-回形取数(C++)
该摘要描述了回形取数问题及其解法。问题要求按照螺旋顺序遍历矩阵元素,从左上角开始向下移动,遇到边界或已访问元素时左转90度。输入为m行n列的矩阵,输出按回形顺序排列的所有元素。示例展示了4×3矩阵的螺旋遍历结果。解法采用边界法,通过维护四个边界变量(left,right,up,down)来控制遍历方向,依次处理下、右、上、左四个方向的元素,直到所有元素被访问。代码简洁高效,时间复杂度为O(mn)。
2026-03-14 16:14:53
14
原创 东华OJ-进阶题-4-大阶乘计算(C++)
本文介绍了一种计算大整数阶乘的高精度算法。针对计算机整数范围有限的问题,采用数组存储各位数字,从低位到高位依次进行乘法运算并处理进位。算法首先通过对数运算估算结果位数,然后初始化数组进行逐位计算。代码实现中,使用vector存储各位数字,通过双重循环完成阶乘计算:外层循环遍历乘数,内层循环处理各位乘法及进位。最终逆序输出数组即得到正确结果。该方法有效解决了大整数阶乘的存储和计算问题,适用于n≤1000的情况。
2026-03-01 15:14:28
29
原创 东华OJ-进阶题-3-字母图形(C++)
本文介绍了一个字母图形生成问题。给定行数n和列数m,要求输出一个特殊的字母矩阵。该矩阵的规律是:第i行从字母'A'+i开始递减到'A',然后递增输出剩余字母。例如,5行7列的图形呈现对称递减再递增的模式。文中提供了C++实现代码,通过双重循环控制字母的递减和递增输出,确保生成符合要求的图形。该解法简洁高效,能够正确处理1到26范围内的输入值。
2026-03-01 15:11:25
31
原创 东华OJ-进阶题-2-回文数(C++)
摘要: 本文介绍了一个编程问题:求大于等于给定整数n的所有四位回文数(正读反读相同的数)。输入n(n<9999),程序按升序输出符合条件的四位数。示例输入9888时,输出9889和9999。解决方案将数字转为字符串,通过比较首尾字符判断是否为回文数。核心代码使用to_string转换数字,并定义palindromic函数验证回文性质,遍历n到9999的范围输出结果。
2026-03-01 15:09:23
36
原创 东华OJ-进阶题-1-Huffuman树(C++)
本文介绍了Huffman树的构造过程及其费用计算方法。Huffman树通过反复合并最小的两个数并累加费用来构建,最终得到总费用。文章给出了具体算法步骤,并以数列{5,3,8,2,9}为例,详细演示了构造过程,总费用为59。提供的C++代码实现了该算法:通过排序、合并最小元素并累加费用,最终输出总费用。输入为数列长度和元素值,输出为构造Huffman树的总费用。
2026-03-01 15:04:58
54
原创 东华OJ-基础题-60-排列数(C++)
本文介绍了一个计算排列数的C++程序。程序通过定义阶乘函数fact(n)来计算n的阶乘,然后在主函数中调用该函数计算排列数Pmn = m!/(m-n)!。输入两个整数m和n,程序输出对应的排列数结果。示例输入3 2时,程序正确输出6。代码简洁高效,使用循环计算阶乘,适用于小规模的排列数计算。
2026-03-01 11:51:31
17
原创 东华OJ-基础题-61-亲和数(C++)
摘要:本文介绍了一个判断两个数是否为亲和数的程序。亲和数是指两个数中每个数的真约数之和等于另一个数。程序通过定义函数计算真约数之和,比较两个数的计算结果来判断是否为亲和数。输入包含多组测试数据,每组输出YES或NO表示判断结果。示例输入输出展示了程序的功能实现。代码使用C++编写,通过遍历约数并求和完成判断。
2026-02-28 20:44:52
18
原创 东华OJ-基础题-62-分拆素数和(C++)
摘要: 该程序用于计算一个偶数可以拆分成两个不同素数之和的方法数。首先判断一个数是否为素数,然后遍历从2到n/2的数,检查i和n-i是否都是素数且不相等。输入包含多个测试用例,每个偶数输出其拆分方法数。例如,输入10时输出1(3+7),而4和6无法拆分,输出0。程序通过遍历和素数判断实现了功能。
2026-02-28 20:42:58
32
原创 东华OJ-基础题-63-歌德巴赫猜想(C++)
本文实现了一个验证哥德巴赫猜想的程序。该程序首先定义了一个判断素数的函数isprime(),然后通过divide()函数找到满足条件的最小素数对。对于输入的每个偶数,程序输出两个素数(较小的在前),其和等于该偶数。示例输入输出展示了程序对8和44的处理结果,分别输出3+5和3+41。该程序简洁高效地验证了6至100范围内哥德巴赫猜想的正确性。
2026-02-28 20:39:39
39
原创 东华OJ-基础题-65-求n天后的日期(C++)
摘要:该程序实现日期累加功能,输入初始年月日和天数n,计算n天后的日期。通过判断闰年调整2月天数,循环处理月份和年份进位,最终输出结果日期。示例输入2000年1月1日加366天,正确输出2001年1月1日。代码使用数组存储各月天数,通过循环处理日数溢出情况,自动调整年月进位。
2026-02-28 20:35:17
200
原创 东华OJ-基础题-68-素数(C++)
摘要:本文介绍了一个计算给定整数区间内素数个数的编程问题。素数是指大于1且只能被1和自身整除的自然数。程序需要处理多组测试数据,每组给出区间[M,N](0<M≤N≤1000000),输出该区间内的素数数量。例如,区间[1,10]有4个素数(2,3,5,7),[10,30]有6个。解决方案通过遍历区间并检查每个数是否为素数来实现,其中素数判断采用试除法(检查2到√n的整数是否能整除n)。该算法能正确处理大区间内的素数计数问题。
2026-02-28 20:22:46
34
原创 东华OJ-基础题-70-矩阵问题(C++)
摘要:本文实现了一个程序,根据输入的整数N生成(2N+1)×(2N+1)的特殊矩阵。矩阵包含5个区域:对角线值为1,上半三角为2,下半三角为3,左半三角为4,右半三角为5。程序通过判断元素位置确定其值,并按要求格式输出矩阵。输入为多组测试数据(1≤N≤8),每组输出对应矩阵,行末无多余空格,数据间无空行。
2026-02-27 11:09:37
30
原创 东华OJ-基础题-74-矩阵转换(C++)
摘要:本文描述了一个关于矩阵对角线转换的问题。题目要求编写程序实现将r×r矩阵沿主对角线(左上到右下)进行转换,即转置矩阵。输入包含多组测试数据,每组数据给出矩阵维度和元素。程序需要输出转置后的矩阵,每组结果之间用空行分隔。示例代码展示了如何通过交换行列索引实现矩阵转置,并处理输入输出格式要求。该问题反映了编程中常见的矩阵操作任务,同时也体现了对输入输出格式规范的重要性。
2026-02-27 11:04:45
158
原创 东华OJ-基础题-75-魔方阵(C++)
本文介绍了一种构造奇数阶魔方阵的方法,并给出了相应的C++实现。摘要如下: 问题描述:三阶魔方阵是一个3×3矩阵,其每行、每列及对角线之和相等。文章提出了一种构造任意奇数阶魔方阵的通用方法,并给出5条具体规则。 构造规则: 数字1放在第一行中间列 后续数字按"右上方"规则放置 处理边界情况(行超出时回到底部,列超出时回到左侧) 当位置被占或处于特殊位置时,改为放在前一个数字下方 程序实现: 使用二维数组存储魔方阵 按照规则逐步填充数字 处理输入输出格式要求 示例:给出了3阶和5阶魔方阵的
2026-02-27 11:02:02
312
原创 东华OJ-基础题-88-字符串排序(C++)
摘要:本文描述了一个帮助孩子记忆英文字母顺序的游戏。孩子需要对输入的小写字母字符串进行排序,连续正确10次可获得奖励。父亲需要编写程序验证孩子的答案,程序需对多组测试数据中的字符串按字母顺序排序后输出。示例输入"asdf"排序后输出"adfs"。解决方案简单高效,直接使用C++的sort()函数即可实现。代码示例展示了如何读取输入、排序字符串并输出结果。
2026-02-27 10:57:22
55
原创 东华OJ-基础题-89-回文问题(C++)
摘要: 该程序用于判断输入的字符串是否为回文(正读反读相同)。通过循环比较字符串首尾字符,若全部匹配则输出"Yes",否则输出"No"。输入为多组测试数据(长度<200,无空格),每组结果独立输出。例如输入"abcba"输出"Yes","abcbb"输出"No"。算法采用双指针遍历,时间复杂度为O(n)。
2026-02-27 10:55:20
25
原创 东华OJ-基础题-97-回文数2(C++)
摘要:本文探讨如何判断一个十进制数及其二进制表示是否均为回文数。回文数是指正读反读都相同的数字。通过将数字转换为字符串并翻转比较,可以验证其回文性质。程序实现中,先检查十进制表示是否为回文,再检查二进制表示是否为回文,若两者都满足则输出"Yes",否则输出"No"。测试样例包括1(Yes)、10(No)和33(Yes),验证了算法的正确性。
2026-02-25 21:30:23
227
原创 东华OJ-基础题-98-加法器(C++)
摘要: 本文描述了一个帮助朋友明明解决加法计算问题的程序。明明因童年对加法的抵触导致数学能力薄弱,现在工作中需要频繁处理多个正整数的连加运算。程序从标准输入读取由加号和正整数组成的表达式(如"1+2+3"),通过逐个解析数字并累加,输出表达式的结果。测试数据包含多组表达式,每组输出一个整数结果。示例输入"1+2+3"输出6,"5+111"输出116。代码使用字符串处理逐字符提取数字并转换为整数累加,最后一项单独处理,简洁高效。
2026-02-25 21:00:18
323
原创 东华OJ-基础题-103-分割数字并排序(C++)
摘要: 题目要求将输入字符串中的'5'视为分隔符,分割后得到若干非负整数(忽略前导零),并按升序排序输出。处理时需注意连续'5'和末尾数字的情况。例如输入"0051231232050775",分割后得到["00","12312320","077"],转换为[0,12312320,77]并排序输出。代码使用字符串处理分割数字,通过stoi转换为整数后排序,最后按要求格式输出。
2026-02-25 20:55:40
34
原创 东华OJ-基础题-102-翻译字符串(C++)
本文摘要:该文介绍了一种情报解密算法,输入以'@'结尾的字符串,遇到数字时将其后字符重复n+1次(n为数字值),其他字符直接输出。算法实现使用isdigit()判断数字,append()重复字符,输出时每3个字符一组用空格分隔。例如输入"2d352d@"输出"ddd 555 5dd d@"。文章提供了C++代码实现,通过循环处理字符串并格式化输出结果,适用于快速解密大量情报数据。
2026-02-25 20:51:00
274
原创 东华OJ-基础题-56-最少拦截系统(C++)-难度难
本文研究了导弹拦截系统的最优配置问题。给定导弹飞行高度序列,要求计算拦截所有导弹所需的最少系统数量。关键思路是维护一个数组存储各系统当前可拦截的最低高度,对于每个新导弹,若其高度低于数组中某个值则更新该值,否则新增系统。通过这种贪心算法,能够高效计算出最小系统数。示例输入输出验证了算法的正确性,如输入389-65序列输出2,输入100-400序列输出4。该解法时间复杂度为O(n^2),适用于给定的数据规模。
2026-02-25 20:45:22
457
原创 东华OJ-基础题-134-3000米排名预测(C++)-深度优先搜索
摘要: 本文解决了一个长跑比赛排名预测问题。给定n名运动员和m个预测,每个预测包含部分运动员的相对排名及正确性标记(0错误/1正确)。要求输出所有可能的最终排名,满足所有预测条件。采用DFS+剪枝算法,通过逐步构建排列并验证预测条件来优化性能。核心思路包括:1)DFS生成排列时进行剪枝,提前排除不满足预测条件的路径;2)完整验证生成的排列是否满足所有预测。最终输出按字典序排列的所有可能排名。算法有效避免了暴力枚举的高复杂度,适用于小规模数据(n≤10)。
2026-02-24 22:32:27
505
原创 东华OJ-基础题-133-FJ的字符串(C++)
题目要求根据给定规律生成字符串序列AN,其中每个字符串由前一个字符串、当前字母和前一个字符串拼接而成。输入N(≤20),输出对应的AN字符串。例如,A3="ABACABA"。 解题思路是通过递推公式:AN = A(N-1) + 中间字母 + A(N-1),中间字母按A,B,C...顺序递增。代码使用vector预计算所有可能的AN,最后直接输出对应N的结果。该方法高效且直观地实现了题目要求。
2026-02-24 22:23:53
97
原创 东华OJ-基础题-132-棋盘多项式(C++)-深度优先搜索
本文探讨了棋盘改造后的八车问题解决方案。在n×n棋盘上,部分格子被挖洞(标记为0),车的攻击范围遇到洞即终止。通过回溯算法遍历所有可能的放车组合,使用剪枝函数isConflict检测冲突(同行/列无洞阻挡),统计各k值的可行方案数。对于输入范例3×3棋盘,输出放1、2、3个车的方案数分别为7、12、4。该算法适用于n≤8的情况,核心在于递归探索"放/不放"分支并维护合法状态,最终按k值输出结果。
2026-02-23 22:32:30
195
原创 东华OJ-基础题-131-8皇后·改(C++)
摘要:本文实现了一个变种八皇后问题,要求在8×8棋盘中放置8个互不攻击的皇后,使其所在格子数字之和最大。算法采用深度优先搜索(DFS)结合回溯法,通过递归遍历所有可能的皇后布局。使用辅助数组记录每行皇后的列位置,并在放置时检查是否与已放置皇后冲突。对于输入棋盘,程序计算并输出所有可行解中的最大数字和。示例输入输出显示,当棋盘为连续递增数字时,最大和为260。该算法有效解决了带权重的八皇后优化问题。
2026-02-16 21:00:03
70
原创 东华OJ-基础题-135-芯片测试(C++)
摘要:本文解决了一个芯片测试问题,其中好芯片数量多于坏芯片。算法利用二维数组存储各芯片间的测试结果,统计每个芯片被测试为"好"的次数。根据题目条件,好芯片被正确测试为"好"的次数必定超过n/2。通过遍历统计结果,输出满足条件的芯片编号。该方法时间复杂度为O(n²),能高效识别所有好芯片。
2026-02-15 20:28:06
51
原创 东华OJ-基础题-130-2n皇后问题(C++)-难度易
本文解决了一个n×n棋盘上放置n个黑皇后和n个白皇后的组合问题。要求两种皇后互不冲突(不在同一行、列或对角线),且只能放在标记为1的位置。算法采用两阶段回溯:首先找出所有合法的黑皇后放置方案,然后对每个黑皇后方案,计算不冲突的白皇后放置方案数。通过维护列占用标记和两条对角线标记来确保皇后互不攻击。对于n≤8的棋盘,该方法能有效计算所有合法放置方案的总数。输入为棋盘大小和可用位置,输出为满足条件的放置方案总数。示例输入输出表明,当某些位置不可用时,可能不存在合法解。
2026-02-15 20:24:56
25
原创 东华OJ-基础题-129-数字游戏(C++)
你将会得到N个正整数,你可以将一个整数接在另一个整数之后以制造一个更大的整数。例如,这有4个数字123, 124, 56, 90,他们可以制造下列整数─ 1231245690, 1241235690, 5612312490, 9012312456, 9056124123…但是,9056124123是最大的那一个。每组测试资料两行,第一行为一个正整数N(N<= 50),第二行将有N 个正整数。你可能会想这是个简单的事情,但对刚有数字概念小孩来说,这会是个简单的任务吗?当N=0代表输入结束。
2026-02-15 18:46:25
24
原创 东华OJ-基础题-126-数列2(C++)
明明爸爸的问题可以归结为:给你一个数列,从中选出1个或若干个数(可以不连续),要求这些数的和能被11整除,问这样的选数方法一共有多少种。
2026-02-15 17:00:31
422
原创 东华OJ-基础题-125-回文或镜面回文(C++)
该问题要求判断给定字符串是否为回文、镜面字符串或两者兼具。回文字符串正反读相同,镜面字符串经过镜像转换后与原字符串的反转相同。通过哈希表存储字符镜像映射,将原字符串镜像转换后与反转字符串比较即可判断。输出结果需根据四种情况分别处理:非回文非镜面、仅回文、仅镜面、既是回文又是镜面。代码实现了镜像转换和字符串反转比较,并按照要求格式化输出结果。注意数字0和字母O视为相同字符的处理,以及每组输出后需空行。
2026-02-15 16:55:17
48
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅