news 2026/7/2 21:59:59

PAT乙级69道真题的C++实现合集(1002-1070,每题独立可编译)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PAT乙级69道真题的C++实现合集(1002-1070,每题独立可编译)

本文还有配套的精品资源,点击获取

简介:整理了PAT乙级考试中编号从1002到1070共69道真题的标准C++代码实现,每道题对应一个独立的.cpp文件,如1003.cpp、1017.cpp、1053.cpp等,命名清晰,开箱即用。所有代码均通过本地编译验证,符合PAT在线判题系统的输入输出规范,覆盖字符串处理、基础数学运算、进制转换、简单模拟、数组与结构体应用等高频考点。不依赖额外库或宏定义,逻辑直白,变量命名规范,便于对照题意理解解法步骤。适合备考者在刷题过程中快速验证思路、调试边界情况、学习标准写法,也适合作为教学示例或算法入门练习素材。不含题目描述和测试数据,专注提供简洁可靠的AC代码参考。

1. 这不是题解集,而是一套“能编译、能调试、能讲清楚”的PAT乙级实战代码手册

你有没有试过:对着一道PAT乙级题,写了半小时,本地输入样例全对,一交OJ就WA?或者好不容易AC了,回头再看自己写的代码——变量名是a、b、c,循环嵌了四层,注释只有// TODO,连三天前的自己都看不懂?又或者,翻遍网上各种“题解”,发现要么是几行Python伪码配一句“思路很简单”,要么是贴一大段黑盒式AC代码,连main函数里怎么读输入都没说明白?

这个合集,就是为解决这些真实痛点而生的。它不叫“PAT乙级69道题答案”,我更愿意称它为PAT乙级C++实战代码手册(v2.3)——一个我在带学生刷题、自己重刷三轮、并持续维护两年后沉淀下来的产物。它覆盖从1002到1070共69道真题(跳过已下线或重复编号的1001、1071等),每道题一个独立.cpp文件,命名即题号:1003.cpp1017.cpp1053.cpp……没有solution_v2_final_revised.cpp这种迷惑行为。所有代码均在Windows(MSVC 19.38)、macOS(Clang 15.0)、Ubuntu(g++ 11.4)三大环境实测通过g++ -std=c++17 -Wall -Wextra -O2编译,零警告、零错误。更重要的是,它拒绝“代码黑盒”:每份实现都严格遵循PAT判题系统的真实约束——标准输入(cin/scanf)、标准输出(cout/printf)、无全局变量污染、无#define int long long这类取巧宏、无using namespace std;滥用。变量命名如n,k,max_score,is_palindrome,逻辑分支用if (carry > 0)而非if (carry),哪怕多打两个字符,也要让意图清晰可辨。这不是为了炫技,而是因为——当你在考场上面对1064“朋友数”这种题,手抖输错一个<变成<=,或者把vector<int> digits误写成vector<int> digit导致编译失败时,一份结构干净、边界明确、命名诚实的参考代码,就是你最后的救命稻草。它适合谁?刚学完C++语法想验证基础能力的大一新生;卡在1035“插入与归并”排序模拟逻辑里的转专业同学;需要给本科生上算法实践课的助教;甚至是你——那个凌晨两点还在改1048“数字加密”进位逻辑、咖啡凉透的备考者。它不教你“动态规划”,但会告诉你1024科学计数法转换里,为什么e_pos必须初始化为-1,而不是0;它不讲“贪心策略”,但会在1062最简分数里,用gcd(a, b)函数体内的三行注释,说清为何abs()不可省略。这69个文件,是我把PAT乙级当作一场严肃工程来对待的结果:可编译是底线,可调试是刚需,可理解才是核心价值。

2. 内容整体设计与思路拆解:为什么坚持“单文件、零封装、强规范”?

2.1 拒绝“题解幻觉”:从“能AC”到“能复现”的关键跨越

很多初学者拿到的所谓“题解”,本质是“结果快照”:作者本地跑通了,截图发论坛,附上几行代码。但问题在于——PAT判题系统有严苛的输入格式要求。比如1003我要通过,输入是"hello world",但实际测试数据可能是"a"(单字符)、" "(纯空格)、""(空行)。网上常见代码直接写string s; cin >> s;,这在遇到空格分隔的字符串时必然失效。而本合集所有涉及字符串读取的题目(如100310351044),统一采用getline(cin, s)并前置cin.ignore()清除缓冲区残留,且在代码开头显式注释:“// 注意:PAT输入含空格,必须用getline,且需处理换行符残留”。这不是过度设计,而是基于对PAT OJ底层机制的理解:它的输入流是逐行喂入的,cin >>遇到空格/换行即停止,若不清除缓冲区,后续getline会直接读到空行。我曾统计过,乙级题中因输入处理不当导致的WA占比高达37%(样本:近3年1000+次提交日志),而这恰恰是多数“题解”刻意回避的细节。因此,本合集的设计起点不是“如何写出最短代码”,而是“如何写出在任何合法输入下都能稳定工作的代码”。

2.2 “单文件”哲学:为什么每个题都必须是独立.cpp?

有人会问:为什么不打包成一个工程,用CMake管理?为什么不抽象出公共工具类(如InputReaderOutputFormatter)?答案很实在:增加一层抽象,就增加一分脱离考试场景的风险。PAT乙级考试环境是极简的——你只有命令行终端、一个文本编辑器、和g++编译器。考场电脑不会预装你的utils.h,也不会允许你#include "common.h"。所有代码必须满足“复制粘贴到任意Linux终端,执行g++ 1017.cpp -o 1017 && ./1017即可运行”。因此,本合集强制要求:每个.cpp文件必须包含全部依赖,不得跨文件引用。这意味着1017(A除以B)中用到的大整数除法,必须在该文件内完整实现,不能调用1050(螺旋矩阵)里的Matrix类。看似重复,实则精准还原考试约束。更关键的是,单文件极大降低了调试门槛。当你在1053(住房空置率)中发现输出精度不对,只需打开1053.cpp,搜索printf("%.1f", ratio),立刻定位到格式化语句,无需在工程目录里层层跳转。我刻意保留了部分“冗余”——比如1025(反转链表)和1052(卖个萌)都实现了链表节点结构体,但字段名、构造方式完全一致(struct Node { int addr; int data; int next; };),目的就是让你在对比学习时,一眼看出差异只在算法逻辑,而非基础设施。

2.3 “零封装”背后的教学逻辑:让新手看懂每一行的意义

本合集坚决不用STL高级容器(如mapsetpriority_queue)替代基础逻辑。例如1045(快速排序)的分区过程,网上常见解法直接调用std::sort,但这违背了题目考查“分治思想”的初衷。我们的实现是:

int partition(vector<int>& arr, int left, int right) { int pivot = arr[right]; // 选末尾为基准 int i = left - 1; // i指向小于pivot区域的右边界 for (int j = left; j < right; j++) { if (arr[j] <= pivot) { swap(arr[++i], arr[j]); } } swap(arr[++i], arr[right]); // 基准归位 return i; }

这段代码里,ij的物理意义被注释得明明白白:“i指向小于pivot区域的右边界”。为什么i要初始化为left-1?因为初始时“小于区域”为空,其右边界自然在left左边一位。这种写法比while双指针更易理解,也更贴近教材描述。同样,在1064(朋友数)中计算各位数字和,我们不用to_string(n)再遍历,而是坚持用while (n > 0) { sum += n % 10; n /= 10; },因为这是C++初学者最易掌握的数学分解模型。所有代码的复杂度都控制在乙级要求范围内:1070(结绳)用sort+贪心,时间复杂度O(n log n),绝不引入O(n²)的暴力解;1034(有理数四则运算)用long long防溢出,但避免使用__int128等非标扩展。这种克制,不是技术保守,而是教学清醒——它确保读者在读懂代码的同时,同步建立起对算法时空代价的直觉。

2.4 规范即生产力:命名、注释、格式的硬性约定

本合集建立了一套可执行的编码规范,每条都源于踩坑教训:
-变量命名:禁止单字母(i,j,k仅用于简单循环索引),1002(数字分类)中用even_sum,odd_sum,zero_count而非sum1,sum2,cnt
-注释原则:只解释“为什么”,不重复“是什么”。1015(德才论)排序规则注释为:“// 德分≥H且才分≥H:第一类;德分≥H但才分<H:第二类…”,而非“// 排序规则”;
-输入输出:所有读取操作前必加ios::sync_with_stdio(false); cin.tie(nullptr);提速,但注释说明“仅用于加速,不影响逻辑”;
-边界处理1028(人口普查)中出生日期校验,明确写出if (year < 1814 || year > 2014),而非if (!valid_date),因为valid_date函数内部逻辑必须透明可见。

这套规范让代码具备“自解释性”。当你打开1058(选择题),看到vector<vector<bool>> correct_ans(N, vector<bool>(M, false));,无需查文档就知道这是N道题、每题M个选项的正确答案矩阵;看到for (int q = 0; q < Q; q++) { // q: question index,立刻明白循环变量含义。这种确定性,是高效学习的前提。

3. 核心细节解析与实操要点:从69道题中提炼出的12个高频陷阱与应对方案

3.1 输入陷阱:空格、换行、缓冲区——那些让你WA到怀疑人生的字符

PAT乙级输入最狡猾的敌人,从来不是算法,而是看不见的空白字符。1003(我要通过!)是典型受害者:题目要求统计字符串中PAT子序列个数,但输入样例"PAAPT"看似简单,实际测试数据包含大量首尾空格、中间连续空格、甚至空行。常见错误代码:

// ❌ 危险写法:忽略输入格式 string s; cin >> s; // 遇到空格即停止,"PA APT"只读到"PA"

正确解法必须直面现实:

// ✅ 标准写法:处理所有空白 string s; getline(cin, s); // 读取整行 // 清理首尾空格(PAT不保证输入纯净) s.erase(0, s.find_first_not_of(" \t\n\r")); s.erase(s.find_last_not_of(" \t\n\r") + 1);

但更深层的问题在缓冲区。1035(插入与归并)要求先读整数n,再读n个数字的数组。错误模式:

int n; cin >> n; int arr[n]; for (int i = 0; i < n; i++) cin >> arr[i]; // 可能失败!

原因:cin >> n后,输入流停在换行符\n,下一个cin >> arr[0]会尝试读\n,导致失败。解决方案是强制清除:

int n; cin >> n; cin.ignore(); // 忽略换行符 vector<int> arr(n); for (int i = 0; i < n; i++) { cin >> arr[i]; }

这个cin.ignore()在69题中出现频次高达42次(如101210241044),它是乙级通关的隐形钥匙。我建议你在自己的代码模板里,凡遇cin >>后接getline或数组读取,无条件加上这一行。

3.2 输出陷阱:精度、格式、换行——判题系统眼中的“完美主义”

PAT判题系统对输出格式的校验,严苛到像素级。1024(科学计数法)要求输出+1.23400E-03,少一个+、多一个0E小写,统统WA。常见错误:

// ❌ 错误:默认精度不足,符号缺失 printf("%.5fE%d", mantissa, exp); // 输出1.234E-3,缺+号,指数位数不对

正确方案需三重控制:

// ✅ 精确控制:符号、小数位、指数格式 printf("%+1.5fE%+03d", mantissa, exp); // %+1.5f:强制显示符号,总宽1(实际足够),小数5位 // %+03d:指数强制符号,宽度3,不足补0

类似地,1053(住房空置率)要求百分比保留一位小数,但printf("%.1f", 12.35)可能输出12.3(银行家舍入)。安全做法是手动四舍五入:

double ratio = (double)empty_cnt / total_cnt * 100; int rounded = (int)(ratio * 10 + 0.5); // 扩大10倍后取整 printf("%d.%d", rounded / 10, rounded % 10); // 输出x.y格式

这种“手动精度控制”在1019(数字黑洞)、1069(微博转发)中反复出现,它牺牲了代码简洁性,换取了100%的格式可靠性。

3.3 数学陷阱:溢出、负数、边界——被忽视的数值暗礁

乙级虽不考高深数学,但基础运算的坑一个不少。1017(A除以B)要求大整数除法,A可达1000位。错误思路是转long long——必然溢出。正确解法是模拟手算:

string divide(string a, int b) { string res; int remainder = 0; for (int i = 0; i < a.length(); i++) { remainder = remainder * 10 + (a[i] - '0'); // 关键:逐位累加 res += (remainder / b) + '0'; remainder %= b; } // 去除前导零 size_t startpos = res.find_first_not_of('0'); if (startpos == string::npos) return "0"; return res.substr(startpos); }

这里remainder * 10 + (a[i] - '0')是核心,它避免了大数存储,用int承载中间余数。另一个经典陷阱在1034(有理数四则运算):计算a/b + c/d = (ad+bc)/bd时,ad+bc可能溢出。解决方案是使用long long,并提前约分:

long long num = (long long)a.d * c.n + (long long)b.n * d.d; // 强制提升精度 long long den = (long long)b.d * d.d; long long g = gcd(abs(num), abs(den)); num /= g; den /= g;

gcd函数必须处理abs(),因为负数的gcd在C++中行为未定义。这些细节,在1062(最简分数)、1070(结绳)中反复验证有效。

3.4 字符串陷阱:大小写、Unicode、编码——中文环境下的特殊挑战

1002(数字分类)要求将数字转中文读法,1048(数字加密)涉及字母映射。最大陷阱是大小写混淆。1048规则:A-Z对应0-25,但输入可能含小写a-z。错误处理:

// ❌ 不安全:假设全是大写 int idx = c - 'A'; // 'a'会得到负数

正确方案:

// ✅ 统一转大写再处理 char upper_c = toupper(c); if (upper_c >= 'A' && upper_c <= 'Z') { int idx = upper_c - 'A'; // ... 加密逻辑 }

更隐蔽的是1020(月饼)中的字符串比较。题目要求按单价降序,单价相同时按销量升序。错误写法:

// ❌ 字符串比较不等于数值比较 sort(cakes.begin(), cakes.end(), [](const Cake& a, const Cake& b) { return a.price_per_unit > b.price_per_unit; // price_per_unit是double,没问题 });

但若用字符串存价格(如"12.5"),"2.0" > "10.0"会返回true(字典序),造成逻辑错误。本合集所有涉及数值比较的字段,一律用doubleint存储,杜绝字符串比较陷阱。

3.5 数据结构陷阱:数组越界、指针悬空、内存泄漏——C++特有的“温柔刀”

1025(反转链表)是重灾区。常见错误是节点地址处理不当:

// ❌ 危险:未检查next是否为-1(NULL) Node* curr = head; while (curr != nullptr) { // 若地址用int存,-1不是nullptr! // ... 处理 curr = nodes[curr->next]; // curr->next可能是-1,nodes[-1]越界! }

正确解法必须区分地址表示:

// ✅ 安全:用map映射地址到节点,-1作终止标记 map<int, Node> nodes; int head_addr; cin >> head_addr; // 读取所有节点... // 反转时检查 int curr = head_addr; while (curr != -1) { // ... 处理 curr = nodes[curr].next; }

1052(卖个萌)涉及二维数组动态分配,错误写法:

// ❌ 内存泄漏风险 int** grid = new int*[n]; for (int i = 0; i < n; i++) grid[i] = new int[m]; // ... 使用后未delete[]

本合集统一采用vector<vector<int>> grid(n, vector<int>(m)),既安全又符合现代C++习惯。这些细节,是C++区别于Python/Java的核心战场,也是乙级考生必须跨越的门槛。

4. 实操过程与核心环节实现:以1064“朋友数”为例,完整展示从读题到AC的闭环

4.1 题目深度解析:超越表面描述的本质建模

1064题面简洁:“如果两个整数各位数字的和相等,则称为‘朋友数’,而这个和就是它们的‘朋友证号’。给定n个整数,求其中有多少个不同的朋友证号。” 初看是哈希去重,但陷阱在“各位数字和”的定义。很多人直接写:

int digit_sum(int n) { int s = 0; while (n) { s += n % 10; n /= 10; } return s; }

这在n=0时返回0,没问题;但在n=-123时,n % 10在C++中是-3(负数取模结果符号取决于实现),导致错误。PAT输入虽保证非负,但严谨起见,本合集采用:

int digit_sum(int n) { int s = 0; int num = abs(n); // 强制非负 do { s += num % 10; num /= 10; } while (num > 0); return s; }

do-while确保n=0时至少执行一次,abs()消除负数隐患。这才是工业级鲁棒性。

4.2 输入输出全流程实现:一行不落的代码实录

以下是1064.cpp的完整实现(精简关键部分,保留所有规范):

#include <iostream> #include <vector> #include <set> #include <cmath> #include <algorithm> using namespace std; int digit_sum(int n) { int s = 0; int num = abs(n); do { s += num % 10; num /= 10; } while (num > 0); return s; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; cin.ignore(); // 清除换行符,为后续可能的getline准备 set<int> friend_ids; // 自动去重、排序 for (int i = 0; i < n; i++) { int num; cin >> num; int fid = digit_sum(num); friend_ids.insert(fid); } // 输出:先输出不同证号个数,再输出所有证号(升序) cout << friend_ids.size() << "\n"; bool first = true; for (int id : friend_ids) { if (!first) cout << " "; cout << id; first = false; } cout << "\n"; return 0; }

编译与测试命令:

g++ -std=c++17 -Wall -Wextra -O2 1064.cpp -o 1064 ./1064 << EOF 8 123 899 51 123 899 51 123 899 EOF # 期望输出: # 3 # 6 19 26

4.3 关键参数与配置说明:为什么这样选?

  • set<int>vsunordered_set<int>set自动排序,输出时无需额外sort,且乙级数据量小(n≤1000),O(log n)插入开销可忽略。unordered_set虽O(1),但需自定义哈希,增加复杂度。
  • ios::sync_with_stdio(false):关闭C++流与C流同步,提速约30%,对n=1000的输入效果显著,且不改变逻辑。
  • cin.ignore():虽然本题后续无getline,但作为模板保留,避免在其他题中遗漏。
  • do-while循环:确保n=0时正确返回0,while (num > 0)num=0时直接跳过,返回0(初始值),但逻辑不如do-while直观。

4.4 边界案例实测记录:那些让代码从WA到AC的瞬间

测试用例输入期望输出实际输出(初版)修复措施修复后输出
全零3\n0 0 01\n00(空行)digit_sumdo-while确保执行1\n0
负数(虽不出现,但防御)1\n-1231\n61\n-6abs(n)包裹1\n6
大数1\n9999999991\n811\n81无问题1\n81
空输入(极端)000(程序退出)for循环不执行,size()为00

这些测试用例被固化为test_1064.sh脚本,每次更新代码必跑。真正的工程实践,始于对边界的敬畏。

5. 常见问题与排查技巧实录:69道题踩坑总结的21条血泪经验

5.1 编译与环境问题速查表

现象可能原因解决方案出现场景(题号)
error: ‘stoi’ is not a member of ‘std’C++标准版本过低编译时加-std=c++11或更高1002,1024
warning: ISO C++ forbids variable length array使用int arr[n](n非常量)改用vector<int> arr(n)1012,1035
程序运行崩溃(Segmentation fault)数组越界、空指针解引用valgrind ./1025检测内存1025,1052
输出乱码(中文环境)终端编码与源码不匹配源码保存为UTF-8,终端设UTF-81002(中文读法)

提示:在Ubuntu下,永久设置终端UTF-8:echo 'export LANG=en_US.UTF-8' >> ~/.bashrc,然后source ~/.bashrc

5.2 逻辑与算法问题高频解法

Q1:为什么我的1035(插入与归并)总是判断错排序类型?
A:关键在“插入排序”的判定逻辑。不能只看前k个有序,必须验证:存在某个k,使得前k个元素是原数组前k个的排序,且第k+1个元素未被移动。正确判定:

bool is_insertion = true; for (int i = 1; i < n; i++) { if (original[i] < original[i-1]) { // 找到第一个逆序点 int k = i; // 验证:original[0..k-1]排序后等于partial[0..k-1] vector<int> sorted(original.begin(), original.begin()+k); sort(sorted.begin(), sorted.end()); if (sorted == vector<int>(partial.begin(), partial.begin()+k)) { // 且partial[k] == original[k],说明k+1未动 if (k < n && partial[k] == original[k]) { is_insertion = true; break; } } is_insertion = false; break; } }

Q2:1045(快速排序)分区后,为什么基准位置总不对?
A:分区函数返回的索引,必须是基准元素最终所在位置。常见错误是返回i后未交换arr[i]arr[right]。正确模板:

int partition(vector<int>& arr, int left, int right) { int pivot = arr[right]; int i = left - 1; for (int j = left; j < right; j++) { if (arr[j] <= pivot) { swap(arr[++i], arr[j]); } } swap(arr[++i], arr[right]); // 关键!基准归位 return i; // 此时arr[i] == pivot }

Q3:1053(住房空置率)中,为什么我的“可能空置”统计少了?
A:题目定义“超过一半日子用电量低于某阈值”,注意是“超过一半”,即days_low > total_days / 2,而非>=。对于total_days=5,需days_low >= 3(因3>2.5),所以用整数比较:days_low * 2 > total_days

5.3 调试技巧独家分享

  • “printf大法”的现代化升级:不用printf("i=%d\n", i),改用cerr << "DEBUG: i=" << i << endl;cerr默认不缓冲,实时输出,且重定向到终端,不影响cout的正常输出。
  • 输入数据可视化:对1018(锤子剪刀布)这类多组输入,加一段调试代码:
    cpp #ifdef DEBUG cerr << "Input: A=" << a << ", B=" << b << endl; #endif
    编译时加-DDEBUG开关启用。
  • 边界值注入测试:为1070(结绳)写测试脚本,自动生成n=1,2,1000length[i]=1,10^4,10^9的组合,用diff比对输出。
  • 时间复杂度验证:对1069(微博转发),用clock()测量n=10000时的运行时间,确保<O(n log n)。

5.4 学习路径建议:如何用好这69个文件?

不要按题号顺序刷!我推荐按能力图谱分层突破:
-第一层(语法巩固)1002,1003,1004,1005—— 字符串、循环、条件,建立输入输出信心;
-第二层(数学建模)1017,1024,1048,1064—— 大数、进制、数字处理,训练数学直觉;
-第三层(数据结构)1025,1052,1034,1062—— 链表、二维数组、分数运算,理解内存布局;
-第四层(算法思维)1035,1045,1053,1070—— 排序模拟、贪心、统计,构建解题框架。

每刷5题,做一次“代码反刍”:打开两个相似题(如10251052),对比它们的节点定义、内存管理、遍历方式,找出共性与差异。这比盲目刷题效率高十倍。

6. 最后一点个人体会:代码是思想的化石,而PAT乙级是检验思想纯度的试金石

写完这69个文件,最大的感悟不是“我又学会了多少算法”,而是对“确定性”的重新认识。在真实的工程世界里,需求模糊、接口多变、环境异构;但在PAT乙级这个微缩宇宙中,一切都有明确定义:输入格式、输出格式、时间限制、内存限制、甚至小数点后几位,都白纸黑字写在题面里。你的代码,要么100%满足,要么0%满足,没有灰色地带。这种绝对的确定性,恰恰是初学者最需要的训练场——它逼你抠每一个字符,想清楚每一个分支,验证每一种边界。我见过太多学生,代码能跑通样例就沾沾自喜,直到模拟考试时,因为1058(选择题)中一个vector<bool>的初始化错误(vector<bool> ans(M, false)写成vector<bool> ans(M),后者默认初始化为true),导致整道题WA,痛失15分。那一刻的懊恼,比任何说教都管用。所以,这69个文件,我坚持不加一行“高级技巧”,不炫一丝“巧妙写法”,因为真正的巧妙,是让代码在任何输入下都稳如磐石;真正的高级,是把最基础的cincoutforif用到极致。当你能看着1015(德才论)里那段长达20行的if-else排序规则,不觉得混乱,反而能清晰指出哪一行对应题面的哪一条要求时,你就真正拿到了通往算法世界的钥匙。这把钥匙,不靠背诵,而靠一行行敲出来,一次次调试出来,一遍遍推倒重来。现在,它就在你面前——69个独立的.cpp文件,没有废话,没有包装,只有代码本身。打开它,编译它,调试它,然后,开始你的确定性之旅。

本文还有配套的精品资源,点击获取

简介:整理了PAT乙级考试中编号从1002到1070共69道真题的标准C++代码实现,每道题对应一个独立的.cpp文件,如1003.cpp、1017.cpp、1053.cpp等,命名清晰,开箱即用。所有代码均通过本地编译验证,符合PAT在线判题系统的输入输出规范,覆盖字符串处理、基础数学运算、进制转换、简单模拟、数组与结构体应用等高频考点。不依赖额外库或宏定义,逻辑直白,变量命名规范,便于对照题意理解解法步骤。适合备考者在刷题过程中快速验证思路、调试边界情况、学习标准写法,也适合作为教学示例或算法入门练习素材。不含题目描述和测试数据,专注提供简洁可靠的AC代码参考。


本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 21:58:44

MATLAB车牌识别实战工程:HSV颜色定位+字符模板匹配全流程代码包

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;直接运行就能识别蓝牌、黄牌的MATLAB车牌识别方案&#xff0c;从原始图片开始走完整流程&#xff1a;自动灰度化、高斯滤波去噪、Canny边缘检测、HSV空间下按颜色特征定位车牌区域、仿射校正、连通域分析切分单…

作者头像 李华
网站建设 2026/7/2 21:58:39

Visio旧版流程图VDX文件繁简中文批量替换工具(C#离线版)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;直接处理Visio 2008等老版本导出的VDX格式文件&#xff0c;无需安装Visio软件&#xff0c;纯本地运行。工具通过解析VDX内部XML结构&#xff0c;精准定位并批量替换所有可见文本——包括形状标题、连接线标注、…

作者头像 李华
网站建设 2026/7/2 21:57:54

小黄车Java考试专用IDEA工程模板(含Maven配置与测试结构)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;专为万得小黄车编程考试设计的Java开发环境模板&#xff0c;开箱即用&#xff0c;直接导入IntelliJ IDEA即可编码、编译、运行和调试。内置标准Maven项目结构&#xff1a;pom.xml已预设常用依赖&#xff0c;src…

作者头像 李华
网站建设 2026/7/2 21:57:14

纯ANSI C实现的FFT算法源码包,含测试用例与完整使用文档

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;提供FFTv2.c和FFTv2.h两个核心文件&#xff0c;用标准C语言实现快速傅里叶变换&#xff0c;支持复数输入输出&#xff0c;不依赖任何第三方库&#xff0c;可在GCC、Keil、IAR等编译器下直接编译运行&#xff1b…

作者头像 李华
网站建设 2026/7/2 21:57:10

2026-07-01 GitHub 热点项目精选

/* 全局样式 */* { margin: 0; padding: 0; box-sizing: border-box; }body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;max-width: 900px; margin: 0 auto; padding: 30px 20px; line-height: 1.7; color: #2d3748;backgro…

作者头像 李华
网站建设 2026/7/2 21:56:04

普通U盘变简易UKey:IE网页直写密码数据到U盘根目录

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;用普通U盘实现类似UKey的轻量级身份写入功能&#xff0c;核心是MFCActiveX.ocx控件&#xff0c;在IE浏览器中让HTML页面&#xff08;如test22.html&#xff09;直接调用U盘写入操作。配合WritePassWordData.exe…

作者头像 李华