題目
思路錄入資料
由於給出的字串數量不多,建立乙個二維陣列儲存原始的字串,錄入字串時,注意把每行最後的\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...