穷举算法

穷举算法是最简单的一种算法,在使用穷举算法前要明确问题的答案的范围,效率并不高,适用于有明显规律可循的场合。

代码段:

static int chicken,rabbit;
public static int sun(int m,int n){
int temp=0;
int i,j;
for(i=0;i<=m;i++) {
j=m-i;
if(2*i+4*j==n) {
temp=1;
chicken=i;
rabbit=j;
}
}
return temp;
}
public static void main(String []args) {
int temp;
System.out.println("穷举法求解鸡兔同笼问题");
Scanner scan =new Scanner (System.in);
System.out.println("输入头数");
int head=scan.nextInt();
Scanner scanner =new Scanner(System.in);
System.out.println("请输入脚数");
int foot=scanner.nextInt();
temp=sun(head,foot);
if(temp==1) {
System.out.println("鸡有"+chicken+"只"+" "+"兔有"+rabbit+"只");
}
else {
System.out.println("输入错误");
}
}

原文地址:https://www.cnblogs.com/mianyang0902/p/10659316.html

时间: 2024-08-02 07:04:01

穷举算法的相关文章

基本算法之穷举算法

穷举算法的思想:从所有的可能的情况搜索正确的答案,其中执行的步骤: 对于一种可能的情况,计算其中的结果. 如果判断的结果的不符合要求就执行第一步来搜索下一个可能的情况 package Main; import java.util.Scanner; public class demo2 { /** * 穷举算法求解鸡兔同笼 * @param args */ static int chichen,habbit; public static void main(String[] args) { int

穷举算法思想

穷举算法的基本思想就是从所有可能的情况中搜索正确的答案,在使用穷举算法时,需要明确问题的答案的范围,在范围中搜索出每一种答案,得到你最想要的答案 1. 对于一种可能的情况,计算出结果 2. 判断结果是否满足,不满足就继续搜索下一个答案,满足要求则表示找到一个正确答案   穷举算法实例: 鸡兔同笼,共有35个头,94条腿,鸡兔各有多少只? (答案范围有两个, 小鸡假设有35只,兔子假设有35只) 看看算法的效果 using System; using System.Collections.Gene

PHP经典题:百钱百鸡问题(穷举算法)

百钱百鸡问题: 已知:公鸡5元一只,母鸡3元一只,小鸡一元3只 现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只? --请考虑尽可能高效的方法 思路: 如果有0只公鸡,0只母鸡,1只小鸡,数量是100吗?价钱是100吗? 否 如果有0只公鸡,0只母鸡,2只小鸡,数量是100吗?价钱是100吗? 否 如果有0只公鸡,0只母鸡,3只小鸡,数量是100吗?价钱是100吗? 否 ...... 如果有0只公鸡,0只母鸡,100只小鸡,数量是100吗?价钱是100吗? 否 如果有0只公鸡,1只母鸡,1只

1.3 枚举(穷举)算法

1 填数字问题 1 #include <stdio.h> 2 int main() 3 { 4 int i1,i2,i3,i4,i5; 5 long multi,result; 6 for(i1=1;i1<=9;i1++) 7 { 8 for(i2=0;i2<=9;i2++) 9 { 10 for(i3=0;i3<=9;i3++) 11 { 12 for(i4=0;i4<=9;i4++) 13 { 14 for(i5=0;i5<=9;i5++) 15 { 16 m

1-5、算法设计常用思想之穷举法

穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称.数学上也把穷举法称为枚举法,就是在一个由有限个元素构成的集合中,把所有元素一一枚举研究的方法. 使用穷举法解决问题,基本上就是以下两个步骤: • 确定问题的解(或状态)的定义.解空间的范围以及正确解的判定条件: • 根据解空间的特点来选择搜索策略,逐个检验解空间中的候选解是否正确: 解空间的定义解空间就是全部可能的候选解的一个约束范围,确定问题的解就在这个约束范围内,将搜索策略应用到这个约束范

10进制转62进制,实现穷举指定位数的所有密码组合(暴力破解)

因为我们这里要穷举的密码包括0-9,a-z,A-Z共62个字符,所以我们采用62进制来遍历. 首先,我们实现一个10进制转62进制的方法. private static char[] charSet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); //private static string[] charSet = { "0", "1&qu

【穷举】用c#实现一个数组(1,1,2,2,3,3,4,4)排列,每两个相同数字中间都间隔了这个数字个数

从题目上看,这个感觉好绕口.其实嘛应该是我表述有问题. 举例吧: 1,[],1 2,[],[]2 这样子,两个相同数字之间要有几个坑. 其实这个数组计算量不算太大.推理能力好的话,分分钟解决了. 在这里我想通过程序去实现的目的: 1.为了空想这个实现过程,思想斗争了一晚上没睡觉,那种穷举方法比较好.其实我都没写过穷举.(--真是想太多) 2.了解下穷举算法.(我也不知道我下面写的方法算不算穷举.哈哈) 首先我们得有一个思路.[穷举出所有可能出现的排列方式=>规则匹配符合要求的数组 =>输出]

javascript--枚举算法实现

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //枚举算法-->穷举算法 window.onload=function () { var aA=document.get

算法基础一 穷举法

/*穷举法*/ /*鸡兔同笼35头,94足,鸡兔各几只?*/ #include<stdio.h> const int Num = 35; const int Foots = 94; int main() { int cN;//鸡 int rN;//兔 for (cN = 0; cN <= 35; cN++) { rN = Num - cN; if (Foots == cN * 2 + rN * 4 ) { printf("鸡:%d,兔:%d\n",cN,rN); }