【日常】20221130
【日常】我看了一些演算法 :D
【資培】20221117
HackMD 課堂連結
容器
Zerojudge 題目
- c123: 00514 - Rails
這是之前寫的,我知道用 goto
很醜,但…好爽:)
1 | #include <iostream> |
- e447: queue 練習
1 | #include <iostream> |
Leetcode 題目
- 20. Valid Parentheses
好。。。我直接暴力解。。。
1 | class Solution { |
- 1700. Number of Students Unable to Eat Lunch
比較沒有那麼暴力的暴力解 XD
1 | class Solution { |
【筆記】APCS 2022 年 6 月場
這是我第一次去考 APCS(誰叫你之前都忘記報),當天考觀念時肚子真的痛得要命,直到中午才去宣洩…我的考場在台北大學三峽校區,令我意外的是男女比沒有到很重,但是大佬倒是挺多的。考實作題時,不知道是不是緊張,就是一直在 debug…最後是寫到第三題寫了一點就結束了。我那天超孤單😢,我朋友給我請假…說他抽考沒讀,我也沒讀啊🤬。反正最後考了 4 / 3 還蠻理想的。
數字遊戲(易)
ZJ 連結:https://zerojudge.tw/ShowProblem?problemid=i399
輸入:3 個 1 ~ 9 的數字
輸出:先輸出數值出現最多的次數,再輸出三個數,且去除重複,由大到小。
想法:既要去掉重複又要排序,我的第一想法就是使用 set。set 是一個容器,它具有資料的唯一性,也就是不可重複,且容器內也會排序,跟 map 一樣。第一筆輸出我會用 4 - set 長度,這樣恰好是重複的個數,再用反向迭代器輸出 set 容器即可。
實作:
1 | #include <iostream> |
字串解碼(中)
想法:就…純粹的暴力解吧…,還有注意題目需求,這題要你解密,不是加密(我朋友不小心…)
實作:未更新(懶)
【筆記】前序式、中序式與後序式
電腦怎麼進行四則運算?
電腦其實很笨,所以計算機在做運算時,只會依你的命令順序做運算。
比如題目為 3 + 2 * 4
若照著順序按,得到的答案是 20。但以四則運算來說這很明顯已經錯了,答案應該為 11。
那前中後序的差別就是運算子的先後順序,可電腦有更好的方法進行四則運算,那就是後(前)序式。
後序式如:3 2 4 * +
數字在前,而運算子在後。在中序轉後序時,運算子會在過程中有比對先後順序,而非直接把運算式按順序放置後方。
1 | 運算子 數字 數字 // 前序 |
所以如果要讓電腦看得懂四則運算的規則必須要讓電腦知道每個符號的有先順序
如:
*
/
大於 +
-
(
)
大於 *
/
中序式轉後序式
若遇到數字則直接輸出或放入字串,遇到運算子就判斷後放進 stack 裡。
若 stack.top()
的運算子權重小於讀取的運算子,如:+
-
小於 *
/
直接 stack.push(運算子)
,
若 stack.top()
的運算子權重大於讀取的運算子,如:*
/
大於 +
-
則先輸出或放入字串 stack.top()
,再 stack.pop()
,最後才 stack.push(運算子)
。
若符號是 (
則直接放入,繼續進行程式直到遇到 )
,才把 stack 到 (
裡的符號輸出或放入字串,記得最後也要把 (
pop 掉。
中序式元素 | stack | 後序式 |
---|---|---|
( | ( | 無 |
3 | ( | 3 |
+ | (+ | 3 |
2 | (+ | 32 |
) | 32+ | |
* | * | 32+ |
( | *( | 32+ |
4 | *( | 32+4 |
- | *(- | 32+4 |
1 | *(- | 32+41 |
) | * | 32+41- |
32+41-* |
1 | #include <iostream> |
【心得】少有人走的路:心智成熟的旅程
這是一本關於「心智與本質」的心理學著作。
【日常】5 月 24 日
今天來戒手機
【日常】5 月 12 日 雨
今天考了一整天的試,眼睛快麻痺了,尤其是文科,看了就頭痛。