枚举算法001

Hello!各位小伙伴们大家好,我是苦瓜,今天我来带大家一起进入算法的世界!我们先从枚举算法开始学习哦!

首先,我给大家普及一下枚举算法的基本概念,枚举算法就是将所有可能的结果进行逐个枚举尝试,进而找到适合条件的数据。说白一点就是利用多重 for 循环将所有的可能进行遍历,最后利用 if 判断语句将我们需要的结果筛选出来。下面,我们用一个简单demo来进行学习。

求100-1000之间的水仙花数(Narcissus)。

public class Narcissus {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 实例化一个对象
        Narcissus nar = new Narcissus();
        nar.printNarcissus();
    }
    public void printNarcissus(){
        // 利用for循环遍历1-1000之间的数字
        for(int i = 1;i<1000;i++){
            //得到百位上的数字
            int a= i/100;
            //得到十位上的数字
            int b= i/10%10;
            //得到各位上的数字
            int c=i%10;
            int number=a*100+b*10+c;
            //用if进行条件判断,符合条件的数字输出
            if(number==a*a*a+b*b*b+c*c*c){
                System.out.println(number);
            }
        }
    }
}

也许这个demo很多人都会写,但是我想在敲代码时真真会想到这是一个枚举算法的人却不是很多,我认为在学习编程的时候我们需要系统地进行学习,将这些算法思想扎根于我们脑海。最后,再次声明,我是苦瓜MOMO,希望大家对我进行批评指正,也请喜欢算法的小伙伴们关注我哦!与君共勉!

时间: 2024-11-03 03:33:25

枚举算法001的相关文章

枚举算法

1.枚举法的基本思想: 根据实际问题设计多重循环,一一枚举所有可能的状态,并用问题给定的约束条件检验哪些状态是需要的,哪些状态是不需要的.能使命题成立的状态,即为其解.虽然枚举法本质上属于搜索策略,但是它与后面讲的回溯法或宽度优先搜索有所不同. 2.枚举条件: ①可预先确定每个状态的元素个数n.如百钱买百鸡问题,3文钱一只鸡的状态元素个数可预先确定: ②可预先确定每个状态元素a1,a2,…,an的值域. 3.框架结构: 设a11为状态元素ai的最小值:aik为状态元素ai的最大值(1<=i<=

【枚举算法Day1】20170529-2枚举算法专题练习

20170529-2枚举算法专题练习 青岛二中日期 序号 题目名称 输入文件名 输出文件名 时限 内存 算法 难度 分类 081113 1 最大矩形 rectangle.in rectangle.out 1s 256MB 枚举 1 02枚举 081031 2 回文 palin.in palin.out 1s 256MB 枚举.优化 1 02枚举 081008 3 问题的设置 problemsetter.in problemsetter.out 1s 256MB 排序+枚举 1 02枚举 0810

2017-9-16C#笔记(枚举算法,百元买鸡)

枚举算法: 百元买鸡 枚举算法的ì例子:问题如下:某3人有100元打算买100只鸡,其中公鸡为5元每只,母鸡为3元每只,小?鸡为3只1块钱,问可以买多少只公鸡,母鸡,小鸡? int x, y, z; for (x = 0; x <= 20; x++) for (y = 0; y <= 33; y++) for (z = 0; z <= 100; z++) if ((x + y + z == 100) && (5 * x + y * 3 + z / 3 == 100) &a

比较“笨”的枚举算法(一)

枚举即一一列举. 一.枚举算法的思想 将问题所有的可能答案一一列举,然后根据实际情况选择合适而丢弃不合适的.在c语言中,枚举算法一般使用while循环实现. 二.实例演练 (1)"百钱买百鸡"问题:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一.百钱买百鸡,问鸡翁.母.雏各几何? 代码实现: #include "stdio.h" int main() { int x, y, z; for (x = 0; x <= 20;x++) { for (y = 0; y

生理周期 枚举算法问题

趁着寒假抓紧自学C++..... 生理周期问题是比较简单的算法问题,运用到了  枚举  的思想. 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为 23 天. 28 天和33 天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例 如,智力周期的高峰,人会思维敏捷,精力容易高度集中.因为三个周期的周长不同,所以 通常三个周期的高峰不会落在同一天.对于每个人,我们想知道何时三个高峰落在同一天. 对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不

【枚举算法Day1】20170529-2枚举算法专题练习 题解

1.OneMoreRectangle 一个矩形 ●如果任意枚举矩形坐标,显然不可行.数组太大,开不下!●我们注意到,如果我们放入了矩形,矩形周围并没有其它矩形,那么稍微移动这个矩形,不会改变答案.显然,一定存在一种方案,使得放入的矩形的边界与某些已知矩形边界重合.我们不妨规定,放入的矩形下边界必须与已知矩形重合.左边界必须与已知矩形重合. 所以就可以做了 1 type rec=record 2 x1,y1,x2,y2:longint; 3 end; 4 var n,x,y,i,j,k,ans,m

算法001.插入排序

1 #include <iostream>; 2 3 using namespace std; 4 void insertion_sort(int * arr, int length); 5 6 int main() 7 { 8 int arr[] = {2,45,5,8,10,4,9,45,8,36,159,125,134,147,155}; 9 int length = sizeof(arr)/sizeof(int); 10 insertion_sort(arr, length); 11

枚举算法——熄灯问题

枚举法练习: 题目: 有 一个由按钮组成的矩阵,其中每行有6个按钮,共5行.每个按钮的位置上有一盏灯.当按下一个按钮后,该按钮以及周围位置(上边.下边.左边.右边)的灯都 会改变一次.即,如果灯原来是点亮的,就会被熄灭:如果灯原来是熄灭的,则会被点亮.在矩阵角上的按钮改变3盏灯的状态:在矩阵边上的按钮改变4盏灯的状 态:其他的按钮改变5盏灯的状态. 在 上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵表示灯状态的改变.对矩阵中的每盏灯设置一个初始状态.请你按按钮,直至每一盏等都熄灭.与一盏

517-coding #1 枚举算法

枚举的技巧(什么是枚举) 暴力? 模拟? for? dfs? bfs? ... 巧妙的枚举.(优化时间复杂度.统计区间的贡献) ... 暴力大家都会 ... 优化暴力... 变成正解. About DFS/BFS 二进制状态压缩表示. 折办搜索然后匹配累加贡献. A* IDA* 搜索 迭代加深的DFS... About 序列上的枚举 若答案具有单调性可考虑枚举一个端点,二分右端点,加上整一段对答案的贡献. 若答案具有单调性可考虑双指针,加上整一段对答案的贡献. ... Some Qestions