Party解題報告

2021-07-25 18:07:02 字數 1331 閱讀 3769

給定若干個含有()和小寫英文本母的字串,問字串是否是括號配對的。

只含有英文本母的串s是正確的

這一條可以稱為遞迴的「基本情況」,描述了最「基本」的串。

如果a, b是正確的,那麼ab也是正確的。

第二條描述了兩個正確的串連線後還是正確的。

如果a是正確的,那麼(a)和[b]都是正確的。

第三條描述了正確的字串可以被一對配對的括號包括,仍是正確的。

(在題目中沒有寫出這一條,但根據上下文是顯然的) 其他串都不是正確的。

這一條稱為「閉包條款」,嚴格的表述應該為:正確的字串集合 c 是所有符合以上三條性質所生成的集合的交集。這條性質最小化了生成的集合。

通俗地說,這種遞迴定義嚴格化了「括號配對」的概念。同時也方便我們進行證明。

考慮到對於30%的資料,僅出現一種括號,不難證明,僅有一種括號時,括號配對當且僅當左右括號數目相同。只需簡單列舉即可得出結果。

這種思路即是直接使用定義進行判斷,鑑於大家還沒有學習遞迴,在此略去。有興趣的同學可以查閱關於「語義分析」的遞迴下降分析法的資料。

首先仍然考慮只有一種括號的情景。為了方便處理,刪去所有英文本元。考慮這樣一種方法:

這種思路有些詭異,如果難以理解,可以嘗試使用下面的思路證明:

定理:僅存在一種括號時,最後桶為空當且僅當字串是正確的。

部分證明:(可以略去)

1. 先證 「桶為

空⇒字元

串正確 」。

必要性證明留做練習。

用同樣的方法不難證明,對於兩種括號乃至n種括號,這樣的方法總是正確的。證明留作練習。

這種處理問題的「桶」稱為棧,將在以後的學習中詳細介紹這種結構。

#include 

#include

#include

using

namespace

std;

char str[300];

char stk[300];

int m;

int main()

}if (top == 0) puts("exciting");

else

puts("everything must follow the basic law");

}return

0;}

Block Voting 解題報告

這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...

Safebreaker 解題報告

又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...

路由 解題報告

路由 問題描述 有乙個tcp ip網路 每台計算機都有乙個或多個網路介面。每個介面根據它的ip位址和子網掩碼來識別 即兩個4位元組的數,兩個字 節之間有乙個 號.子網掩碼有乙個二進位制表示法 有k個 1 然 後是 m 個 0 k m 8 4 32 如 212.220.35.77 是乙個 ip 地 址...