1089 狼人殺-簡單版 (20 分) C語言
阿新 • • 發佈:2018-11-23
1089 狼人殺-簡單版 (20 分)
#include<stdio.h> int main() { int n; scanf("%d", &n); int wj[n]; int w1=0,w2=0; //全域性變數在沒有賦值以前系統預設為0,而區域性變數在沒有賦值以前的值是不確定的,所以有兩個選擇,1.全域性變數;2.區域性變數賦初值 for(int i=1;i<=n;i++) { scanf("%d", &wj[i]); //輸入玩家說的話 } //假設有兩個狼人i,j for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { int pl=0, wl=0; //統計好人和兩人說謊 //遍歷每個人說的話,判斷其是否說謊 for(int k=1;k<=n;k++) { //如果玩家k說的話小於0,則wj[k]為狼人,如果這個狼人不是i也不是j,則說明是謊話; //如果大於0,說明這個人是好人,如果wj[k]是 i或者j中的一個,說明是謊話 if((wj[k] < 0 && -wj[k] != i && -wj[k] !=j) || (wj[k] > 0 && (wj[k] == i || wj[k] == j))) { //k說謊了,如果k不是狼人,則好人說謊加1,否則狼人說謊+1 if(k != i && k != j) pl++; else wl++; } } if(pl == 1 && wl == 1) { w1 = i; w2 = j; break; } } if(w1!=0) break; } if(w1!=0) printf("%d %d", w1, w2); else printf("No Solution"); }