zoukankan      html  css  js  c++  java
  • 搜索总结

    个人的小总结之搜索:

    以下是我做了丢丢题之后的总结

    计算机很多问题无法根据某种确定的法则来求解,可以利用搜索与回溯;

    搜索与回溯的题目问法(我做过的练习题中的orz)有

    1、排列

    2、分解(一个数有几种分解方法);对应的有合成(几个数可以组成这个数),如一个简单的背包问题:一个包可以放的重量是多少,每件物品重量是多少?、

    3、遍历。怎么走?怎么跳?有几种走法?(有障碍就用bool 型标记一下)

    题型

    特点1:跳马:其实马每跳一步所面临的条件都是一样的:没有跳过,或者没有障碍,还超过界限,结束条件是到达终点;

    素数环:相当于20个空位,每加入一个数就面临着共同的条件或者约束 与它相邻的数和他的和是素数,唯一面临的条件不一样的是最后一个,要判断和第一个的和是不是素数

    所以搜索有循环的意思,他们面临的条件都一样;

    特点2 :最值问题:效率最高?时间最少?怎样分配?

    需要将所有排列的情况列出找最值

    注意剪枝(如求最小值时,如果当前的值已经比之前求出的最小值大了,这就情况就可以舍弃了,不用继续进行)

    典型题如:1分书:先找共同条件:找一本没有被选过且他喜欢的书,2 图m的着色:涂一个和这个结点连接的点颜色不同的颜色 3、分配工作:分一个没有被选过的工作

    技巧

    1、剪枝(不多解释了)

    2、排列问题:怎样不重复

    (1)素数环的题目

    怎样避免出现平移答案,也就是一组答案,最后一个数移到第一个数前面组成一个新的答案;

    可以将第一个素数固定,就好比一个手镯,你已经固定1个点朝上,那么整个手镯就转不动了

    (2)如数的拆分中,将7分解,7=4+3与7=3+4是一种情况,怎样避免呢?

    可以分解时分解的第n个数比n-1大那样7=4+3就没有了,(详细代码见前面的随笔)

    (3)有重复元素排列问题:aacc 进行排列 就会aacc,aacc是一种情况,怎样避免?

    可以加一个计数器,统计每个字母出现的次数,每用一次计数器-1,可以排列的条件是计数器不为零(代码见前面随笔)

    (4)字符序列题目中 ABABC是不允许的,怎样判断呢 ?

    A=1,B=2,C=3;

    加入第n个数,计算a[n-3]*10+a[n-2]是否等于a[n-1]*10+a[n],相当于例子中12123 发现12=12是不允许的。

  • 相关阅读:
    jython resources
    Installing a Library of Jython ScriptsPart of the WebSphere Application Server v7.x Administration Series Series
    jython好资料
    ulipad install on 64bit win7 has issue
    an oracle article in high level to descibe how to archtichre operator JAVA relevet project
    table的宽度,单元格内换行问题
    Linux常用命令大全
    dedecms系统后台登陆提示用户名密码不存在
    登录织梦后台提示用户名不存在的解决方法介绍
    Shell常用命令整理
  • 原文地址:https://www.cnblogs.com/zzyh/p/6623625.html
Copyright © 2011-2022 走看看