考察了分而治之的思想。題目的表述讓我聯想起表示式的bnf描述:
::= # 乙個數是表示式實際上就是按照題目要求,將檢查指標細分,以求達到庖丁解牛、逐個擊破的效果。| 「(」 「)」 # 在表示式兩邊加個括號也是表示式
| 「+」 # 兩個表示式相加也是表示式
| 「-」 # 接下來你全懂了
| 「*」
| 「/」
源**(c)
#include
#include
/* *得到「答案正確」的條件是:
* 字串中必須僅有 p、 a、 t這三種字元,不可以包含其它字元;
* 任意形如 xpatx 的字串都可以獲得「答案正確」,其中 x 或者是空字串,或者是僅由字母 a 組成的字串;
* 如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a、 b、 c 均或者是空字串,或者是僅由字母 a 組成的字串。
*現在就請你為 pat 寫乙個自動裁判程式,判定哪些字串是可以獲得「答案正確」的。
*/int
main
(void
)elseif(
(pt =
strchr
(str,
't'))==
null
)else
for(i=
0;i(ifor(i=indexp+
1;i(ifor(i=indext+
1;i(inum_mida = indext - indexp -2;
num_lefta = indexp;
num_righta = len - indext -1;
if(num_mida >0)
else}}
}
PAT乙級考試 1003 我要通過!
題目 思路錄入資料 由於給出的字串數量不多,建立乙個二維陣列儲存原始的字串,錄入字串時,注意把每行最後的 n替換為 0,方便後續的判斷 再建立乙個陣列儲存結果用於列印。判斷字串是否符合要求 前兩個條件很好理解,這裡不再贅述 對於第三個條件,我們設串中 p 前面的 a 有l個,p 和 t 中間的 a ...
PAT 乙級 1003 我要通過! 20 分
include include include include include using namespace std intmain scanf d n for int i 0 i n i if flag true cntp 1 cnta 0 cntt 1 if flag true result ...
PAT乙級1003 我要通過! 20分
原本 寫的很複雜,看了柳神對這題的解答之後感覺豁然開朗,柳神真的太強了!能獲得 答案正確 的字串都有乙個規律,t 後面 a 的數量 p 前面 a 的數量 p 與 t 之間 a 的數量,運用這個規律此題便迎刃而解。另外,呼叫一下stl庫中的map函式,也能使程式簡化很多。附上map函式的介紹 incl...