1003 我要通過! 20

2021-07-15 09:59:52 字數 1513 閱讀 5776

1. 字串中必須僅有p, a, t這三種字元,不可以包含其它字元;

2. 任意形如 xpatx 的字串都可以獲得「答案正確」,其中 x 或者是空字串,或###者是僅由字母 a 組成的字串;

3. 如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a, b, c 均或者是空字串,或者是僅由字母 a 組成的字串。輸入格式: 每個測試輸入包含1個測試用例。第1行給出乙個自然數n (<10),是需要檢測的字串個數。接下來每個字串佔一行,字串長度不超過100,且不包含空格。

輸出格式:每個字串的檢測結果佔一行,如果該字串可以獲得「答案正確」,則輸出yes,否則輸出no。

輸入樣例

8

pat

paat

aapataa

aapaataaaa

xpatx

pt whatever

apaaataa

輸出樣例
yes

yes

yes

yes

no no

no no

#include 

#include

#include

int main()

//如果不是p a t 直接輸出no

}if(b==1&&c==1&&a!=0)//乙個p和t的基礎上,p前a的個數乘以p——t間a的個數等於t後a的個數則為yes

if(flag)printf("yes\n");

else

printf("no\n");

}return

0;}

這裡應用了strchr( )函式

具體用法:

查詢字串s中首次出現字元c的位置。

extern char *strchr(const char *s,char c)

功能:查詢字串s中首次出現字元c的位置

說明:返回首次出現c的位置的指標,返回的位址是被查詢字串指標開始的第乙個與val相同字元的指標,如果s中不存在c則返回null

返回值:成功則返回要查詢字元第一次出現的位置,失敗返回null

如果是同乙個陣列內的兩個指標相減,得到的是返回值是整型,為兩個位址間距離

大減小,為正,反之,為負。

例如

if(b==1&&c==1&&a!=0)

這裡p1就是第一次出現p的位址,應該是『2』(從2開始),s的位址應該是『0』(從0開始),p1-s的返回值為整數2,如果s-p1則為『-2』.

指標也是可以相減的

1003 我要通過! 20

pat1003 規則1和2是基本要求 規則3 apbtc apbatca,那麼可以逆推 apbatca 到 apbtc,直到 a pata 這種形式,說明源字串是符合要求的 詳細說明 apbtc,則b中每次減少乙個a,c中減少a字串,直到cpatd形式,若c d,則說明滿足規則2,即原串符合要求 i...

1003 我要通過! 20

先貼上題目 這個題目從開始思考,到最終得到 答案正確 的時間跨度很長,主要原因有 1.題目要求分析不清 2.實現時,出現幾個困難點 1 如何讀入多個字串?最初出現問題可能是由於沒有注意到題目中要求字串長度不超過100 2 陣列元素個數未知,如何避免出現錯誤?this is the code.incl...

1003 我要通過! 20

這道題題目有點難懂,只能總結出規律 設p前面 的個數為 和 之間的a的個數為b t後面的個數為c 結論 a b c 通過第二條 這裡注意兩個x是乙個變數 可以得到 n 1 n是正確的 第三條說明 n 2 2n是正確的把這一條繼續帶入第三條 得到 n 3 3n是正確的。結果顯而易見。include u...