1. 程式人生 > >窮舉法的應用舉例

窮舉法的應用舉例

程式碼如下:

/*
*作者:王爭取
*問題描述:百錢百雞問題:中國古代數學家張丘建在他的《算經》裡提出著名的“百錢百雞”問題:
雞翁一,值錢五,雞母一,值錢三,雞稚一,值錢一,百錢買百雞問:翁,母,稚各幾何?
*/
#include <iostream>

using namespace std;

int main()
{
    double x,y,z;//x,y,z分別為翁,母,稚的數量
    for(x=0;x<=20;x++)
     for(y=0;y<=33;y++)
      for(z=0;z<=100-x-y;z++)
      {
          if((5*x+3*y+z)==100)
          cout<<"雞翁"<<x<<"只,雞母"<<y<<"只,雞稚"<<z<<"只"<<endl;
      }
    return 0;
}

<pre name="code" class="cpp">/*
*問題描述:n元錢可換1分,2分,5分硬幣,有多少種方案,輸出所有方案
*/
#include <iostream>

using namespace std;

int main()
{
    double x,y,z;//x,y,z分別為1分,2分,5分硬幣的枚數
    for(x=0;x<=10;x++)
     for(y=0;y<=5;y++)
      for(z=0;z<=100-x-y;z++)
      {
          if(x+2*y+5*z==100)
          cout<<"1分硬幣"<<x<<"枚,2分硬幣"<<y<<"枚,5分硬幣"<<z<<"枚"<<endl;
      }
    return 0;
}


/*
*問題描述:張三,李四,王五,劉六的年齡成等差數列,四人年齡相加是26,相乘為880,求以他們年齡為前4項的等差數列的前20項
*/
#include <iostream>

using namespace std;

int main()
{
    double x,d;
    for(x=1; x<=6; x++)
        for(d=1; d<=4; d++)
        {
            if(4*x+6*d==26&&x*(x+d)*(x+2*d)*(x+3*d)==880)
                break;
        }
    cout<<20*x+20*19*d/2<<endl;
    return 0;
}


窮舉法的應用主要是從所有組合中篩選出符合條件的組合