穷举算法思想

穷举算法的基本思想就是从所有可能的情况中搜索正确的答案,在使用穷举算法时,需要明确问题的答案的范围,在范围中搜索出每一种答案,得到你最想要的答案

1. 对于一种可能的情况,计算出结果

2. 判断结果是否满足,不满足就继续搜索下一个答案,满足要求则表示找到一个正确答案

 

穷举算法实例:

鸡兔同笼,共有35个头,94条腿,鸡兔各有多少只? (答案范围有两个, 小鸡假设有35只,兔子假设有35只) 看看算法的效果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            qiongJT(35,94);

            Console.ReadKey();
        }

        static void qiongJT(int head,int foot)
        {
            for (int i = 0, j =0; i <= head; i++)
            {
                j = head - i;

                //i * 2 = 小鸡的总脚
                //j * 4 = 兔子的总脚
                if(i * 2 + j * 4 == foot)
                {
                    Console.WriteLine("小鸡有:{0}只", i);
                    Console.WriteLine("兔子有:{0}只", j);
                    Console.WriteLine("---------------------------------");
                }

            }
        }

    }
}

效果:

时间: 2024-10-13 13:28:42

穷举算法思想的相关文章

基本算法之穷举算法

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

穷举算法

穷举算法是最简单的一种算法,在使用穷举算法前要明确问题的答案的范围,效率并不高,适用于有明显规律可循的场合. 代码段: 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

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

基本算法思想Java实现的详细代码

基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为例介绍一些常用的算法思想. 分类 穷举算法思想 递推算法思想 递归算法思想 分治算法思想 概率算法思想  穷举算法思想 穷举算法的基本思想 从所有可能情况中搜索正确答案 1. 对于一种可能情况,计算其结果. 2. 判断结果是否满足,如不能满足者执行第一步来搜索下一个可能的情况:如满足则表示选找到一个

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.了解下穷举算法.(我也不知道我下面写的方法算不算穷举.哈哈) 首先我们得有一个思路.[穷举出所有可能出现的排列方式=>规则匹配符合要求的数组 =>输出]