程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++根本算法思惟之窮舉法

C++根本算法思惟之窮舉法

編輯:關於C++

C++根本算法思惟之窮舉法。本站提示廣大學習愛好者:(C++根本算法思惟之窮舉法)文章只能為提供參考,不一定能成為您想要的結果。以下是C++根本算法思惟之窮舉法正文


窮舉算法(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;
}

法式中,起首由用戶輸出頭的總數和腳的總數,然後挪用窮舉法求解雞兔同籠成績的函數,最初輸入成果。

履行該法式,依照標題的請求輸出數據,輸入成果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved