JuniorPT 收录了阶段性课堂/实验练习的 PPT 题目(已转换为 Markdown)以及对应的 C++ 参考实现。代码按照训练批次划分在 pt1–pt7 目录中,便于独立练习、调试与后续扩展。
- 克隆仓库:
git clone git@github.com:submergepsc/JuniorPT.git - 进入目录:
cd JuniorPT - 运行批量编译脚本验证环境
- 按需进入各
ptN目录阅读 Markdown、编辑或运行题目源码
ptN/:第 N 次课堂练习New 第 N 次课堂练习.pptx:原始课件New 第 N 次课堂练习.md:幻灯片文字版题目说明*.cpp:按课件指定文件名实现的 C++ 题解
a.py:预留脚本入口,可放置 PPT 转 Markdown 等自动化工具LICENSE:授权条款(默认 MIT)
建议保持 PPT、Markdown 与题解文件名一致,以便后续维护。
Pi.cpp:莱布尼茨级数求 PIShapeEx.cpp:打印菱形图案CountChar.cpp:统计字符串字符频率CountDigit.cpp:统计整数各数字出现次数Huiwen.cpp:判断回文数candy.cpp:分发糖果(贪心法)
Tgs.cpp:枚举 1-10000 同构数DecomposeTest.cpp:质因数分解CodeEncry.cpp:四位数加密ws.cpp:1000 内完数dclass.cpp:100 学生随机分班ColorSort.cpp:红绿蓝排序(荷兰旗)
peach.cpp:猴子吃桃carno.cpp:车牌推理pp.cpp:乒乓球队配对tranOcttoDec.cpp:八进制转十进制nkcs.cpp:尼科彻斯定律HIndex.cpp:H 指数
ListInert2.cpp:有序数组插入killPrisoner.cpp:奇偶出列约瑟夫wordMax.cpp:最长单词wordCount.cpp:词频统计magic.cpp:奇数阶幻方GasCircle.cpp:加油站环路
InsertStr.cpp:主串插入子串pailie.cpp:循环排列矩阵mostWater.cpp:盛水容器brackets.cpp:括号匹配monkey.cpp:约瑟夫数组解monkeyLink.cpp:约瑟夫链表解IPO.cpp:IPO 资本最大化
createList.cpp:链表拼接monkeyLink.cpp:链表约瑟夫moveList.cpp:移除右侧更大节点reverseLink.cpp:带头结点逆置danceMatch.cpp:舞伴配对模拟
getNumber.cpp:提取数字序列BridgeCard.cpp:桥牌发牌undercover.cpp:谁是卧底推断marry.cpp:五服内婚姻合法性
批量编译(Linux / macOS / WSL):
shopt -s globstar nullglob
for file in pt*/**/*.cpp; do
echo "building $file"
g++ -std=c++17 "$file" -o /tmp/juniorpt.out || exit 1
done单个题目调试:
g++ -std=c++17 pt3/peach.cpp -o peach && ./peach若在 Windows + MinGW 环境,可将 g++ 替换为对应编译器命令。
- PPT 转 Markdown:可使用 Python
zipfile + xml.etree.ElementTree解析ppt/slides/slide*.xml中的a:t文本,将输出写入New 第 N 次课堂练习.md。 - 批量构建脚本:建议新建
scripts/build_all.sh或scripts/build_all.ps1封装上述命令,方便持续集成。 - 样例管理:若题目含复杂输入,可在 Markdown 中追加示例段落,或在源码顶部记录注释示例。
- 新增练习:将 PPT 放入对应
ptN目录,并同步生成 Markdown。 - 添加题解:按课件指定文件名创建
.cpp,保持输入输出格式简洁明了。 - 更新文档:每次新增题目后同步更新「题目索引」或相关章节。
- 公共代码:如需复用工具函数,可创建
lib/或include/,并在 README 中记录引用方式。 - 版本控制:尽量保持各
ptN相互独立,减少跨目录依赖,便于课堂按批次交付。
- 仓库位于其他 Git 项目内部时,执行
git add .会提示嵌套仓库;请在JuniorPT内单独提交,或改用 submodule 管理。 - 中文路径或终端编码导致的编译警告,可将仓库放在 ASCII 路径下,或按需添加
-fexec-charset=UTF-8等参数。 - 若 PPT 更新内容较多,可重新运行转换脚本覆盖 Markdown,并在提交信息中注明更新来源。