用列舉法解決簡單的問題

2021-08-26 13:33:48 字數 976 閱讀 1967

/*

*有了迴圈控制結構,就可以實現一種典型的解決問題的方法--列舉法。

*列舉法就是對可能是解的眾多候選者按某種順序進行逐一列舉和檢驗,

*從中找出符合要求的候選解作為問題的解。

*//*乙個關於我國四大湖的問題:

四個同學有以下表述:

甲:洞庭湖最大,洪澤湖最小,潘陽湖第三。

乙:洪澤湖最大,洞庭湖最小,潘陽湖第

二、太湖第三。

丙:洪澤湖最小,洞庭湖第三。

丁:潘陽湖最大,太湖最小,洪澤湖第二,洞庭湖第三。

對於每個湖的大小,已知每個人僅回答對乙個,設計程式判別4個湖的大小排序

a、b、c、d分別表示4個湖:a表示洞庭湖、b表示洪澤湖、c表示潘陽湖、d表示太湖

*///**清單如下

#includeusing namespace std;

int main()

{ int a,b,c,d;

bool flag = false; //設定標誌位

for (a=1; a<=4 && !flag; ++a) //嘗試所有的情況

for(b=1; b<=4 && !flag; ++b)

if(a == b) continue; //洞庭湖和洪澤湖的排名不能並列

else for (c=1; c<=4 && !flag; ++c)

if (c==a||c==b) continue; //洞庭湖、洪澤湖和潘陽湖的排名不能並列

else { d=10 -a-b-c; //確定洞庭湖的排名

//每個人只有乙個正確

if(((a==1)+(b==4)+(c==3))==1

&&((b==1)+(a==4)+(c==2)+(d==3))==1

&&((b==4)+(a==3))==1

&&((c==1)+(d==4)+(b==2)+(a==3))==1)

{cout<< "洞庭湖第"<

C 列舉法解決八皇后問題

用列舉法解8皇后問題 在西洋棋棋盤上放8個皇后,西洋棋棋盤共有8行8列,皇后可以吃掉與之同行同列以及同一對角線上的其他皇后。為了讓她們共存,請編寫演算法找出各種放置方法。題目要求用列舉法解決該問題,但是若完全用迴圈實現起來過於繁瑣,所以這裡使用遞迴呼叫求解,用for迴圈的思路與之相同。可以用一維陣列...

列舉法的簡單應用

箱子裡有紅,黃,藍,白,黑五種顏色玻璃球若干,每次任意拿出三個球,問拿出三種不同顏色玻璃球的可能取法,請輸出每種排列的情況。註解 利用列舉法定義五種情況,enum color 定義四個整形變數 int i,j,k,m 0 依次從i到k分別進行從紅到黑的情況迴圈,利用if來決斷i,j,k互不相等的情況...

用分治法解決最近對問題

1.問題描述 給出在同乙個平面內所有點的座標,然後找出這些點中最近的兩個點的距離。2.解析 將所給平面上n個點的集合s分成兩個子集s1和s2,每個子集中約有n 2個點。然後在每個子集中遞迴地求最接近的點對。在這裡,乙個關鍵的問題是如何實現分治法中的合併步驟,即由s1和s2的最接近點對,如何求得原集合...