用C 怎樣做邏輯判斷題

時間 2021-10-14 20:20:42

1樓:堵丹彤

雖然不是最好,但能解決問題,程式也不長:

#include

using namespace std;

int main()

char name[6]=;

int i,value[6];

for(value[0]=0;value[0]<2;value[0]++)

for(value[1]=0;value[1]<2;value[1]++)

for(value[2]=0;value[2]<2;value[2]++)

for(value[3]=0;value[3]<2;value[3]++)

for(value[4]=0;value[4]<2;value[4]++)

for(value[5]=0;value[5]<2;value[5]++)

if((value[0]+value[1]) //a和b二人中至少去一人;

&&(value[0]+value[3]<2) //a和d不能都去;

&&(value[0]+value[4]+value[5]>=2) //a,e和f三人中至少去二人;

&&(value[1]==value[2]) //b和c都去或者都不去;

&&(value[2]+value[3]==1) //c和d兩人中去一個;

&&(value[3]>=value[4])) //若d不去,則e也不去。等價於「若e去則d就去」。

for(i=0;i<6;i++)

if(value[i])

cout

cout

2樓:

/*某偵查對接到一項緊急任務,要求在a,b,c,d,e,f六個隊員中儘可能多地挑若干人,

但有以下限制條件:

1,a和b二人中至少去一人

2,a和d不能都去

3,a,e和f三人中至少去二人

4:b和c都去或者都不去

5:c和d兩人中去一個

6:若d不去,則e也不去。

用c++程式設計,輸出選中地人選

*/#include

using namespace std;

#define a 0

#define b 1

#define c 2

#define d 3

#define e 4

#define f 5

bool go[6]=; // 對應表示 abcdef 去(true)或不去(false)

bool best[6]; // 記錄最好方案(即去的人數最多)

int max=-1; // 記錄最多去的人數//檢查當前派遣方案的合法性

bool leagal()

// 輸出可行的方案

void print()

}void search(int p)

go[p]=true;

search(p+1);

go[p]=false;

search(p+1);

}int main(int argc, char *ar**)

3樓:

三樓的遞迴用的很好,值得學習,我這裡用不成熟的迴圈依然可以解決該問題。

#include

using namespace std;

bool g(bool a,bool b,bool c,bool d,bool e,bool f);

void change(bool arr, int n, int n1);

void change(bool arr, int n, int n1, int n2);

int main()

;int i,j;

bool flag=false;

bool h=g(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]);

for(i=0; i<6; i++)

change(arr,6,i);

h=g(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]);

}for (i=0; i<6; i++)

change(arr,6,j,i);

h=g(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]);}}

for(j=0; j<6; j++)

if(arr[j])

}cout<

return 0;

}void change(bool arr, int n, int n1, int n2)

void change(bool arr, int n, int n1)

bool g(bool a,bool b,bool c,bool d,bool e,bool f)

本地編譯通過,且得到最優化的組合,執行結果如下:

最大的人陣列合是:a b c f

press any key to continue

4樓:匿名使用者

#include

using namespace std;

const unsigned int a = 0x1;

const unsigned int b = 0x2;

const unsigned int c = 0x4;

const unsigned int d = 0x8;

const unsigned int e = 0x10;

const unsigned int f = 0x20;

bool go(unsigned int plan,unsigned int subject)

bool abgoatleastone(unsigned int n)

bool adcannotgotogether(unsigned int n)

bool aefgoatleasttwo(unsigned int n)

bool bcsame(unsigned int n)

bool cdgoone(unsigned int n)

bool ecannotgowithoutd(unsigned int n)

void print(unsigned int n)

typedef bool (*pfcondition)(unsigned int);

int main()

;for(unsigned int n=0;n<0x40;++n)

}if(brightplan)

print(n);

}return 0;

}//唉,拿分來吧,答案abcf

5樓:

abcdef 分別賦值 為123456

cout<<(a或b)並且(非a並且非b)。。。。。

以上是簡單的程式 大概就是這樣 然後用輸出值來判斷 是誰被選中了

6樓:匿名使用者

a,b,c,d,e,f六個隊員去的設為1,不去的設為0.條件1:a+b>=1 條件2:a*d==0

(不能同時為1) 條件3: a+e+f>=2 條件4: b==c==1||b==c==0 條件5:

c==1,d==0||d==1,c==0 條件6:d==0&&e==0 然後寫迴圈 a,b,c,d,e,f的範圍

從0到1,for迴圈巢狀,不斷驗證是否滿足上述條件,最後輸出你要的結果

#include "stdafx.h"

int _tmain(int argc, _tchar* ar**)

getchar();

return 0;

}輸出結果:abcf 和acf 因此就選abcf了 上面程式僅用c寫的如有不足請多多包涵

公務員邏輯判斷題,高手來

充分的話,是指軍事力量的強大,就可以實現中國的崛起,很明顯這是一個偏激的說法來的 必要的話,就是說中國崛起了,肯定是會增強國家的軍事力量,這是可以實現的啊 所以說這是一個必要條件假言命題來的 崛起的中國必須以強大的軍事力量支撐自己的脊樑從這句話可以看出 強大的軍事力量是支撐中國崛起的脊樑的必要條件。...

判斷題,怎麼做?急急急太急

1.對2.錯 3.錯 4錯5錯 6.錯7對 1.錯。表面積與體積的單位不同,無法比較。2.錯。3.錯。理由同1.4.錯。假設一個長方體的長寬高分別為a,b,c,此時面積為2 ab bc ac 長寬高擴大三倍後,長寬高變為3a,3b,3c,面積為2 3a 3b 3b 3c 3a 3c 9 2 ab b...

各路c語言高手幫幫忙啊,做個判斷題哈

第三題 錯誤 不會導致編譯錯誤,因為x 5表示將5賦值給x,此條語句一直為真,故而編譯不會報錯 第四題 錯誤 輸出應該是tf 如果增加break語句才會輸出一種情況,如下所示 int i 20 switch i 10 第五題 正確 如 switch i 第六題 正確 對指向陣列,字串的指標變數可以遏...