每日一算法


穷举法:

又叫枚举法。

穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。

也许有些人认为,穷举法未免太"笨拙",的确,穷举法有着其致命的缺点------效率低下,但是,在一些领域,利用计算机高速运算能力与穷举法相结合能够解决某些无规律的问题。另外,经常有黑客利用穷举法破解密码。因此,这样看似"笨拙"的穷举法,有有时候能够发挥大作用。

下面来看一下穷举法的简单应用

鸡兔同笼

每日一算法_第1张图片
图片发自App


鸡兔同笼,是我国古代著名趣题之一,记载于《孙子算经》之中。

其原题是:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

大致意思是:有鸡和兔在同一笼子,已知有35个头,94只脚,问鸡有几只,兔有几只?

鸡兔同笼问题求解:

分析:由于此问题没有明显的规律,因此可以考虑采用简单粗暴的穷举法。在一定范围内将所有可能情况一一尝试

java代码如下

import java.util.*;

public class JiTuTongLong{

public static int chicken,rabbit,re;

/*定义为类变量,便于主函数访问。*/

public static void main(String[] args){

Scanner s=new Scanner(System.in);

System.out.println("请输入头个数");

int head=s.nextInt();

System.out.println("请输入脚只数");

int foot=s.nextInt();

qiongju(head,foot);

if(re==1){

System.out.println("鸡有"+chicken+"只\t兔子有"+rabbit+"只");

}

else{

System.out.println("无法求解");

}

}

public static int qiongju(int head,int foot){

int i,j;

for(i=0;i<=head;i++){

j=head-i;

if(2*i+4*j==foot){

/*如果满足条件就向chicken,rabbit赋值。*/

chicken=i;

rabbit=j;

re=1;//用于判断是否有解

}

}

return re;

}

}

就这样,通过利用计算机强大的计算能力,一步一步地尝试,直到得出结果。

好了,本期的《每日一算法》就讲到这里,希望大家可以多多支持哦!

//注:由于本人接触编程不久,若有错误或更好建议,欢迎指正或提出建议。

你可能感兴趣的:(每日一算法)