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;
}
法式中,起首由用戶輸出頭的總數和腳的總數,然後挪用窮舉法求解雞兔同籠成績的函數,最初輸入成果。
履行該法式,依照標題的請求輸出數據,輸入成果。