溱桦
溱桦
全部文章
分类
归档
标签
去牛客网
登录
/
注册
溱桦的博客
全部文章
(共10篇)
题解 | 二叉树遍历(这才是清华要的基础解法)
直接建树当然能做,但是代码量太大;然而,作为清华的题,理想的解法是,用栈显示实现树的遍历;原理如下:元素按先序入栈,第一次遇到时先不管,遇到空节点退回时,第二次遇到这个节点再输出,即可转化为中序遍历;可以发现,整个过程与递归函数如出一辙2;观察输入数据,也可以注意到,按照#出现的顺序,找左侧未输出过...
2026-02-01
0
44
题解 | 全排列(层序遍历)
比递归直接构造要慢,不过思路和代码简单粗暴;在a的2个位置分别插入b;在ab和ba的3个位置分别插入c; ...最后排个序; #include <iostream> #include <string> #include <list> using namespac...
2026-01-28
0
33
题解 | 简单计算器(代码<20行)
没括号就是这样,getchar()调一调格式,注意出现除法时,不要用整型 #include <stdio.h> int main() { float val[100]; while (scanf("%f", &val[0]) != EOF) ...
2026-01-28
0
33
题解 | 堆栈的使用(14行够了)
#include <stdio.h> int main() { int stk[1000], top, n; while (top=-1, scanf("%d", &n) != EOF) { char c; f...
2026-01-27
0
32
题解 | 单词替换(sstream玩赖)
核心卡点无非就一个,我们需要先读取一行,再读取替换规则。要是这一行字符串,能再次当做输入就好了。c++ sstream可以做到这一点,与我们习惯的iostream是类似的,相当好用。注意,c语言也有类似功能的函数!把字符串再次当做输入。 #include <iostream> #incl...
2026-01-27
0
48
题解 | 特殊乘法(这应当是最简洁的了)
通过因式分解,我们应当注意到,这题不是模拟,只需求2个数,所有位数之和的乘积;因此我们的输入只需要1个字符即可;技巧:对于数字字符而言 ^'0' 等效于 -'0' #include <stdio.h> int main() { char a; while (a=getc...
2026-01-27
0
34
题解 | 二次方程计算器(无穷解怎么办,题目没说啊)
题目没说清测试用例是否会退化为一次方程,把无穷解的情况归类为无解了;(你也不告诉我最大字符串的长度,人家北大就告诉);思路:1)利用符号('-''+''=''\0')分段读取,把字符串解析为数值;2)左右双指针取段,r从1开始即可解决负数开头的情况;3)利用flag控制正负,减少代码量,没别的代码少...
2026-01-21
0
31
坠落的蚂蚁(不用模拟的归纳法)
注意到:除A以外的蚂蚁是没有身份,一视同仁的如果没有任何身份,两只不同速度的蚂蚁相遇,会发生什么?在逻辑上,他们交换了速度,或者交换了身份。在视觉上,没有变化!因此,本题看似是复杂的模拟系统,实际上,时间存在上界, 100。假设有一只蚂蚁从1cm开始向右移动,那么,永远有一只蚂蚁(无论是谁),需要继...
2026-01-04
2
51
路径打印(80行c语言手搓简化的文件系统或许并不复杂)
关键词:文件系统,静态链式存储,二分查找看不懂别人的代码,可以来看这个,逻辑相当简单暴力, 只是需要基础扎实, 强烈建议手搓实现以下;相信大家第一时间能观察到:1)如果不考虑重复与排序,仅有一条路径,正确打印十分容易,无非就是换行后多两个空格;2)如果我们已经有一个树,用于表示文件结构,只需先序遍历...
2026-01-03
1
57
题解 | Repeater(不动点最简洁?分制思想)
未必是最快的,但或许是最简洁的。灵感:如果我拿着一张世界地图在地球上行走,那地图上一定有一个点,就代表它本身。注意到,我们只要找到不动点即可:1)如果一个点在粗粒度已经落在了“空白区”,直接输出空格即可。2)只有不断细分,直到最小尺度仍不是空白,才输出相应的符号。 #include <stdi...
2025-12-29
1
54