PAT乙級考試 1003 我要通過!

2021-10-08 06:51:30 字數 988 閱讀 7892

題目

思路錄入資料

由於給出的字串數量不多,建立乙個二維陣列儲存原始的字串,錄入字串時,注意把每行最後的\n替換為\0,方便後續的判斷;再建立乙個陣列儲存結果用於列印。

判斷字串是否符合要求

前兩個條件很好理解,這裡不再贅述

對於第三個條件,我們設串中『p』前面的『a』有l個,『p』和『t』中間的『a』有m個,『t』後方的『a』有n個,有以下三個結論

(1)若乙個串c的m>1且滿足條件,則必然有乙個前置串c』也滿足條件,c』中l』=l,m』=m-1,n』=n-l;

(2)根據上乙個結論,每乙個滿足條件且m>1的串c都可以遞推出乙個初始串c』』,該串有l』』=l,m』』=1,n』』=n-(m-1)*l;

(3)若初始串滿足條件,則c也滿足條件,若初始串不滿足條件,則c不滿足條件

列印結果

注意最後一行不要列印換行符即可

#include

#include

char

*f_gets

(char ch,

int n)

//錄入函式

return p;

}int

judge

(char ch)

//判斷函式,這裡用a,b,c代替l,m,n

if(b <

1|| c <0)

return0;

else

if(b ==

1&& a == c)

return1;

else

return0;

}int

main

(void

)

PAT乙級 1003 我要通過

考察了分而治之的思想。題目的表述讓我聯想起表示式的bnf描述 乙個數是表示式 在表示式兩邊加個括號也是表示式 兩個表示式相加也是表示式 接下來你全懂了 實際上就是按照題目要求,將檢查指標細分,以求達到庖丁解牛 逐個擊破的效果。源 c include include 得到 答案正確 的條件是 字串中必...

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...