PAT乙級 1003 我要通過

2021-10-02 10:10:40 字數 937 閱讀 3160

考察了分而治之的思想。題目的表述讓我聯想起表示式的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...