題意:n個人中,有兩個是狼人,其中不是所有狼人都說謊,說謊的人有兩個。
思路:先確定狼人,然後找說謊的人,如果說謊的人有兩個且其中有乙個是狼人就輸出結果。
反思:(1)開始想先確定說謊的人,在確定狼人,但是總是有人不能確定是狼人還是普通人。
(2)可以通過乙個人說話的結果來判斷他是否說謊。
#include#include#include#includeusing namespace std;
int a[120],vis[120];
vector vc;
int main(void)
} }cout<<"no solution"
}
PAT甲級刷題
給定兩個字串s1和s2,刪除s1中在s2 現過的字元設定flag陣列,初始化為0。遍歷s2並將其字元轉化為ascii碼值,並在flag陣列中相應位置值標記為1,表示它出現過。再遍歷s1,若對應字元ascii碼值在flag陣列中相應位置值標記為0,則輸出。就是hash的思想,時間複雜度o len s1...
pat 甲級 1093(邏輯題)
思路 1 要找pat的數量,先找到a在找到a前面p的個數c1,再找出a後面t的個數c2,就能求出這個a構成的pat的個數,就是c1 c2 2 優化 先找出所有t的個數,然後每次遇到乙個t就減少1,遇到乙個p就 1,遇到a就已經知道 a前面的p和a後面的t。3 反思 一開始想用暴力,後來暴力不行就像找...
pat 甲級 1101(細節題)
思路 找合適作為pivot point的點,要求是左邊的數字全部小於它,並且右邊的數字全部大於它 可以先從左開始向右判斷符合左邊數字全小於它的 大於最大值 然後再從右向左判斷右邊數字大於它的 小於最小值 注意 結尾一定要將換行分開輸出,不然寫成cout 要求的兩行不符。include include...