C++ 练习题
在浏览器里解题,即时判题。每道题都有隐藏测试、分层提示、完整题解和深度解析 — 通关拿经验、解锁徽章,从第一步到真正的算法思维,按顺序排好。
怎么玩
- 选一道题,在题目页的编辑器里写代码。
- 点 评测(或在编辑器里按 Ctrl+Enter)— 代码在你自己的浏览器里逐个测试点地跑,哪个过了、哪个挂了一目了然;失败的测试点会展开显示:输入、期望输出、你的程序实际打印了什么。
- 想重来?重置一键恢复起始模板(会清掉已存草稿,所以先问你一下)。
- 卡住了?把提示一层层展开看,先别翻题解。做出来了?通过横幅会直接给你"下一题"链接 — 六十五道题按难度连成一条路。
和本站一切功能一样,判题在本地浏览器完成 — 无账号、不上传、什么都不离开你的设备。草稿自动存在浏览器里。好消息是:死循环会在 3 秒后被自动中断,不会再卡住标签页 —— 写错了只花几秒钟,不用重开页面。
65 道题
没有匹配的题目 —— 换个主题或清空搜索。
入门
| 题目 | 考察点 | |
|---|---|---|
| 两数求和 | 读入输入、打印输出 | 从这里开始 |
| 打个招呼 | 第一次读、第一次写 | |
| 奇数还是偶数 | 一个取模、一个分支 | |
| 绝对值 | 按符号分岔 | |
| 交换两个数 | 交换为什么需要临时变量 | |
| 三个数排序 | 三次比较交换 | |
| 倒着数 | for 循环可以往回走 | |
| 1 到 N 求和 | 你的第一个 for 循环 | |
| 三个数的最大值 | if 语句与比较 | |
| 数一数位数 | while 循环与整数除法 | |
| 数字之和 | 拆位模式第三遍 | |
| 闰年判断 | &&/|| 与边界条件阅读 | |
| 乘法表 | 循环 + 精确的输出格式 | |
| 反转字符串 | 字符串、字符数组 | |
| 数元音 | 字符检查、cctype | |
| 字符串压缩 | 单指针,段会自己结束 |
进阶
| 题目 | 考察点 | |
|---|---|---|
| 反转数字 | 位数、% 与 / 的配合 | |
| 回文数 | 认出"这题我已经会了" | |
| 阿姆斯特朗数 | 先数位数,再把每位升到那个次方 | |
| 星号金字塔 | 嵌套循环、输出格式 | |
| 阶乘 | 累乘、int 溢出天花板 | |
| 数组最大值 | 数组 vs 流式处理、运行最大值 | |
| 奇偶统计 | 并行计数器、负数的坑 | |
| 反转单词顺序 | 读整行、切词、倒着打印 | |
| 爬楼梯 | DP 入门:最后一步决定递推式 |
中级
| 题目 | 考察点 | |
|---|---|---|
| 素数判断 | 循环逻辑、提前退出、√N 捷径 | |
| 素数计数 | 埃氏筛 — 用内存换速度 | |
| 最大公约数 | 欧几里得算法,第一个经典算法 | |
| 最小公倍数 | 复用 gcd —— 以及为什么先除后乘 | |
| 斐波那契数 | 滑动窗口、递归 vs 迭代 | |
| 二进制表示 | 位拆分、数组暂存倒序打印 | |
| 矩阵求和 | 二维数组、嵌套循环 | |
| 是不是 2 的幂? | 收缩循环、位技巧 | |
| 数字出现次数 | 计数数组 | |
| 数一数 1 的个数 | 位运算、Kernighan 技巧 | |
| 最少硬币数 | 贪心:先拿装得下的最大面值 | |
| 括号匹配 | 数组当栈,压入与弹出 | |
| 枚举子集 | 位掩码:每个子集都是一个二进制数 | |
| 二维区间求和 | 四个角的容斥 | |
| 最小路径和 | 第一道二维 DP:每个格子两种过去 | |
| 日期相差几天 | 闰年规则 + 序列号相减 | |
| 矩阵乘法 | 三重循环,一个共享下标 | |
| 螺旋矩阵 | 四条收缩边界,两处复检 | |
| 约瑟夫环 | 模拟:alive 数组 + 取模走圈 |
算法思维
| 题目 | 考察点 | |
|---|---|---|
| 第二大的数 | 一趟遍历同时追踪两个值 | |
| 是否存在两数之和 | 每对只试一次 —— 内层 j 从 i+1 开始 | |
| 冰雹序列 | 模拟一条没人解得出的规则 | |
| 数单词 | 带状态标志的字符串扫描 | |
| 冒泡排序 | 比较与交换,原地重排 | |
| 二分查找 | 把有序范围对半砍,以及那几个边界 | |
| 最大子段和 | 一趟遍历,只往前带一个值 | |
| 回文串 | 同时从两端往中间走 | |
| 矩阵转置 | 哪个下标才是行? | |
| 进制转换 | 取余、收集、倒序 | |
| 计数排序 | 用内存换掉比较 | |
| 汉诺塔 | 在函数写完之前就相信它 | |
| 阶乘末尾零 | 把「算」换成「数」 | |
| 区间求和 | 前缀和:付一次,查询 O(1) | |
| 全排列 | 回溯:选、递归、撤销 | |
| 区间合并 | 先排序,再带「当前末端」扫一遍 | |
| 排队打水 | 交换论证证明的贪心 | |
| 凑硬币 | 贪心会挂的 DP:{1,3,4} 凑 6 | |
| 括号生成 | 带回溯剪枝的搜索 | |
| 0/1 背包 | 循环方向决定能否复用 | |
| 最长上升子序列 | 「以这里结尾」的最长链,O(n²) |
开刷之前
- 输出必须完全一致 — 同样的字符、同样的行(行尾空格和最后的换行不影响判定)。
- 所有题都能用初学者工具箱解决:
cin/cout、if、循环、数组、函数 — 和课程覆盖的范围一致。 - 做出来之后试着升级同一道题:能把 1 到 N 求和做成 O(1) 公式吗?素数判断能跳过偶数吗?