演算法思想篇(1) 列舉演算法

2021-07-04 12:39:17 字數 1602 閱讀 1314

列舉演算法的思想是:將問題的所有可能的答案一一枚舉,然後根據條件判斷此答案是否合適,保留合適的,丟棄不合適的。在c語言中,列舉演算法一般使用while迴圈實現。使用列舉演算法解題的基本思路如下所示。

(1)確定列舉物件、列舉範圍和判定條件;

(2)逐一列舉可能的解,驗證每個解是否是問題的解。

列舉演算法一般按照如下三個步驟進行。

(1)題解的可能範圍,不能遺漏任何乙個真正解,也要避免有重複。

(2)判斷是否是真正解的方法。

(3)使可能解的範圍降至最小,以便提高解決問題的效率。

用兩個例子說明列舉演算法的思想:

(1)百錢買百雞問題:公雞每只5元,母雞每只3元,小雞3只1元,用100塊錢買100隻雞,問公雞,母雞,小雞各多少只?

以上問題可以用如下**解決

//start from the very beginning,and to create greatness

//@author: chuangwei lin

//@e-mail:979951191

@qq.com

//@brief: 百錢買百雞問題

#include

int main()

} return

0;}

執行結果如下:

(2)填寫運算子問題

在下面的算式中,新增+-*/4個運算子,使這個等式成立:5 5 5 5 5 = 5

**如下:

//start from the very beginning,and to create greatness

//@author: chuangwei lin

//@e-mail:[email protected]

//@brief: 運算子填寫

#include

int main()

; //運算子

printf("輸入5個數,之間用空格隔開:");

for(j=1;j<=5;j++)

scanf("%d",&num[j]);//5個數放在num陣列裡,注意第乙個數放在num[1]

printf("輸入結果:");

scanf("%d",&result);

//開始填運算子

for(i[1]=1;i[1]<=4;i[1]++)//迴圈4種運算子,1表示+,2表示-,3表示*,4表示/,這裡是第乙個運算子

}if(left+sign*right==result)//若結果滿足}}

}}}}

}}if(count==0)//若沒有符合條件的

printf("沒有符合要求的方法!\n");

return

0;}

結果如下:

演算法基礎(1) 列舉

列舉在大家看來可能是乙個非常簡單的問題,不就是乙個遍歷演算法嘛,有什麼好說的,然而,在參加了北京大學mooc的演算法基礎後,我直接被震驚了。原來列舉演算法還能這麼玩!好吧,不說有的沒得沒得了,先來看第乙個例子 熄燈問題 這個問題的描述如下 乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的...

演算法入門 1 列舉法。

以下都是通過列舉法解決問題的。其實列舉法的本質就是把所有問題可能的結果都嘗試一邊,再通過某種條件將錯誤的結果篩選出去,留下的便是正確的結果。輸出乙個直角三角形,符合 注釋中的那個三角形格式。輸出乙個個三角形 輸入 5 輸出的是乙個五行的三角形 第一行 1個 第二行 2個 第五行五個 第一步 我們需要...

演算法1 列舉法解決熄燈問題

北大郭煒老師 程式與演算法 二 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按鈕改變3盞燈的狀態 在矩陣邊...