1樓:
1、首先是將五個人的**寫成表示式:
讓關係運算子 「==」 的含義是 「是」。
讓數字 1、2、3、4、5 分別表示名次。
讓整型變數 a、b、c、d、e 分別存放每個選手所得名次。
a選手說:b==2,a==3;
b選手說:b==2,e==4;
c選手說:c==1,e==2;
d選手說:c==5,d==3;
e選手說:e==4,a==1;
2、考慮到每個人說的話是一對一錯,即一真一假,比如a說的(b==2)+(a==3)應該是 1。
1+0=1
0+1=1
所以可以得到以下表示式:
ta= ((b==2)+(a==3))==1;
tb= ((b==2)+(e==4))==1;
tc= ((c==1)+(d==2))==1;
td= ((c==5)+(d==3))==1;
te = ((e==4)+(a==1))==1;
ta+tb+tc+td+te==5
3、每個人的名次是不同並且都是屬於,那麼我們就可以得到以下表示式:
a+b+c+d+e=15
a*b*c*d*e=120
4、通過列舉,多重迴圈即可得到滿足以上條件的a、b、c、d、e的值。
**如下:
#include
using namespace std;
int a,b,c,d,e;
void main()
for(a=1;a<=5;a++)
for(b=1;b<=5;b++)
for(c=1;c<=5;c++)
for(d=1;d<=5;d++)
for(e=1;e<=5;e++)
if((a+b+c+d+e)==15)
if ((a*b*c*d*e)==120)if (((b==2||a==3)+(b==2||e==4)+(c==1||d==4)+(c==5||d==3)+(e==4||a==1))==5)
2樓:匿名使用者
1 2 3 4 5
a說: b a
b說: b e
c說: c d
d說; d c
e說: a e
插圖比較麻煩,講究著看。
他們說的都是一半對一半錯,那麼我們就用假設法。
1:假設a說的當中a第三是對的-->那麼d說的d第三就錯-->則d說的c第五就對-->則c說的c第一就錯-->則c說的d第四就對,這樣我們就確定了a-3,d-4,c-5.
另一邊,a說a三對,-->則a說b是第二就錯-->b說的b是第二就錯-->b說的e是第四就對,而上面已經推出了d是第四,兩者相矛盾,所以就是錯了咯。
2:根據第一點推斷的,知道a說的b是第二十正確的,就根據這樣推就行了,結果是a b e d c.
當然,上面是我推出來了,所以直接先判的a說a第三是對,這樣就可以排除這種可能,但在寫**的過程中就需要你分很多種的情況去分析,說白了,也就是不斷的用if else if else....加上"||"和"&&"去做判斷,所以要比較的細心點要考慮到全面的情況。**就不寫了,我也嫌麻煩。
3樓:剎那v永恆
建議做一下八皇后,和這個一個道理……我得關機了,明天晚上給你寫程式
4樓:匿名使用者
窮舉,然後分別判斷每個人描述的是否是一個對一個錯,如果全滿足就可以輸出結果。
c 程式設計求助大神,求助c 程式設計
呀呵嗨,呀呵嗨,三月碧波湧茶海,滿眼春綠一排排。片片翠葉誰裁出,春風無語濃濃愛。陽光輕輕吻,新芽俏爭春,茶香縷縷醉情懷。c 程式設計題求助大神 你這個畫質 真的沒辦法看清題目啊,兄弟,建議上傳原圖,或者把題目那段放大一些 c 程式設計,求大神幫忙 include include using name...
C語言指標程式設計題,求助大佬,C語言程式設計題,求助大佬,謝謝
include int main c語言程式設計題,求助大佬,謝謝 include stdio.h int main int argc,char argv if w 3500 1500.0 tax w 0.03 else if w 1500.0 w 4500.0 tax w 0.1 105 else...
C語言的簡單題,求助大神c語言程式設計題求助大神
include struct s int main void if p null sp while head if max 0 如果max為0,說明沒找到重複出現子串 printf no output n return 0 那麼問題來來了,兩個重複源則子串允不允許有交集?比如 abcd abcd a...