C++基本演算法思想之窮舉法_C 語言

來源:互聯網
上載者:User

窮舉演算法(Exhaustive Attack method)是最簡單的一種演算法,其依賴於電腦的強大計算能力來窮盡每一種可能性,從而達到求解問題的目的。窮舉演算法效率不高,但是適應於一些沒有規律可循的場合。

窮舉演算法基本思想
窮舉演算法的基本思想就是從所有可能的情況中搜尋正確的答案,其執行步驟如下:

(1)對於一種可能的情況,計算其結果。

(2)判斷結果是否符合要求,如果不滿足則執行第(1)步來搜尋下一個可能的情況;如果符合要求,則表示尋找到一個正確答案。

在使用窮舉法時,需要明確問題的答案的範圍,這樣才可以在指定的範圍內搜尋答案。指定範圍之後,就可以使用迴圈語句和條件陳述式逐步驗證候選答案的正確性,從而得到需要的正確答案。

窮舉演算法舉例
雞兔同籠問題最早記載於1500年前的《孫子兵法》,這是一個非常有名的問題。雞兔同籠的原文如下:

今有雞兔同籠,上有三十五頭,下有九十四足,問雞兔各幾隻?

這個問題的大致意思是:在一個籠子裡關著若干只雞和若干只兔,從上面數共有35個頭,從下面數共有94隻腳。問籠中雞和兔的數量各是多少?

窮舉演算法
這個問題需要計算雞的數量和兔的數量,我們通過分析可以知道雞的數量應該在1~35之間。這樣我們可以使用窮舉法來逐個判斷是否符合,從而搜尋答案。

採用窮舉法求解雞兔同籠問題的程式範例程式碼如下:

複製代碼 代碼如下:

/*
輸入參數head是籠中頭的總數,foot是籠中腳的總數,chicken是雞的總數,rabbit是兔的總數
返回結果為0,表示沒有搜尋到合格結果;
返回結果為1,表示搜尋到了合格結果
*/
int qiongju(int head,int foot,int *chicken,int * rabbit)
{
 int re,i,j;
 re=0;
 for(i=0;i<=head,i++)  //進行迴圈
 {
  j=head-i;
  if(i*2+j*4==foot) //進行判斷
  {
   re=1;  //找到答案
   *chicken=i;
   *rabbit=j;
  }
 }
 return re;
}

窮舉演算法求解雞兔同籠問題
完整的瓊劇演算法求解雞兔同籠問題的程式碼如下:
複製代碼 代碼如下:

#include<iostream>
using namespace std;
/*
輸入參數head是籠中頭的總數,foot是籠中腳的總數,chicken是雞的總數,rabbit是兔的總數
返回結果為0,表示沒有搜尋到合格結果;
返回結果為1,表示搜尋到了合格結果
*/
int qiongju(int head,int foot,int *chicken,int * rabbit)
{
 int re,i,j;
 re=0;
 for(i=0;i<=head;i++)  //進行迴圈
 {
  j=head-i;
  if(i*2+j*4==foot)  //進行判斷
  {
   re=1;    //找到答案
   *chicken=i;
   *rabbit=j;
  }
 }
 return re;
}
int main()
{
 int chicken,rabbit,head,foot;
 int re;
 cout<<"窮舉法求解雞兔同籠問題:"<<endl;
 cout<<"請輸入頭數:";
 cin>>head;
 cout<<"請輸入腳數:";
 cin>>foot;
 re=qiongju(head,foot,&chicken,&rabbit);
 if(re==1)
 {
  cout<<"雞有"<<chicken<<"只,兔有"<<rabbit<<"只。"<<endl;
 }
 else
 {
  cout<<"無法求解!"<<endl;
 }
 return 0;
}

程式中,首先由使用者輸入頭的總數和腳的總數,然後調用窮舉法求解雞兔同籠問題的函數,最後輸出結果。

執行該程式,按照題目的要求輸入資料,輸出結果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.