問題の説明:
A、B、C、D、E 5人、黒または白のメモ紙の額に各人があります。乗って5人は、誰もが他の誰かの額に紙の色を見ることができます。5人は互いの後に観察しました:
- A:「私は三人はそれが白で、もう1つは黒い紙が額に掲載されて額に掲載見ました。」
- Bは言った:「私は4人が額に掲載黒い紙です見ました。」
- Cは言った:「私は一人が、白、他の3人は額が黒い紙で掲載された額に掲載しました。」
- Dは言った:「私は額に投稿4人が白で見ました。」
- Eは何も言いませんでした。
現在知られているヘッドのことわざは、黒い紙が嘘、真実を語っ白人男性に対する彼女の額であると述べました。白と黒の額掲載紙が誰である額を計上し5人に尋ねますか?
分析:
ええと、ええと、ちょうど正解に立ち上げ、学校の弟がコードで書くことはできません尋ねました...
一人一人の分析は皆のために、嘘か真実を語っのみ2例は、そこにある、と言って、すべての暴力の列挙は、正しい答えを選出することができます
この問題を解決する鍵は、正しい論理式を記述するためのロジッククラスです。条件は、プログラム言語で記載されている分析の明確な記述が枯渇法を用いて、最終的な決意の結果の後に得ることができる定義します。
0は黒紙ペーストで表され、ペーストは白で表され
条件を決定します。
1(&&(B + C + D + E == 3) ||!&&(B + C + D + E!= 3))&& 2(B &&(+ C + D + E == 0 ) ||!B &&(+ C + D + E!= 0))&& 3(C &&(+ B + D + E == 1) ||!C &&(+ B + D + E! = 1))&& 4(D &&(+ B + C + E == 4) ||!D &&(+ B + C + E!= 4))
コード:
1の#include <stdio.hの> 2 INT メイン() 3。 { 4。 int型 A、B、C、D、E; / * 0黒と1を表す白用* / 5。 ための(A = 0 ; A <= 1。 ++) / * すべての可能の網羅5枚の額メモ用紙カラー* / 6。 ための(B = 0 ; B <= 1。 ; B ++ ) 。7 用(C = 0 ; C <= 1。 ; C ++ ) 8。 ため(D = 0 ; D <= 1 ; D ++ ) 。9 用(E = 0; E <= 1。E ++ ) 10 であれば((&&(B + C + D + E == 3)||!&&(B + C + D + E!= 3))&& 11 (B &&(+ C + D + E == 0)||!B &&(+ C + D + E!= 0))&& 12 (C &&(+ B + D + E == 1)||!C &&(+ B + D + E!= 1))&& 13 (D &&(+ B + C + E == 4)||!D &&(+ B + C + E! D?" 白":" 黒" ); 20はある のprintf(" 彼の額に貼られたステッカーは、%sのE色れる\ N-。"、E?" ホワイト":" 黒" ); 21がある } 22は、 リターン 0 ; 23です }