搜索
FlyuZ
这个作者很懒,什么都没留下…
展开
-
hdu1016-dfs回溯法
很经典的一道素数环的题。 回溯法的基本思想 在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。 若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才原创 2017-05-02 21:10:46 · 544 阅读 · 0 评论 -
hdu2446--二分搜索+打表
题意大概就是:拿一堆炮弹,堆三角形,问最后一个炮弹,在第几个三角形的第几行的第几个。 数据量是小于2的63次方,我没找数学规律,用的打表做的。大概想法就是,打一个 第i个三角形由几个炮弹组成的表(第i个=第i-1个+i),再打一个第i个三角形之前(包括第i个)一共有多少个炮弹。 然后先二分找炮弹在第几个三角形,再二分找在第几行。 最后算得最后位置。#include <iostream>#i原创 2017-07-08 15:23:07 · 463 阅读 · 0 评论 -
hdu-1455 dfs+剪枝
题意大概是给你几根相同长度的绳子or木头,然后剪成几根,每段最大长度不超过50,最多剪成64根,然后问你,最开始没减的时候的最小长度是多少。 比如说 1 2 3 4 就是 1+4 2+3 两根 长度为5的剪得。做这种需要剪枝的题,我的想法是,先不管超时,把容易想到的剪枝和整体思路写出来,然后再慢慢改。就这道题而言, 比较好想的剪枝是先排序,和总长度除以目标长度要整除,不好想的是dfs里的原创 2017-07-10 18:22:19 · 335 阅读 · 0 评论 -
hdu1180-bfs
题目中需要注意的是 1、地图中不会出现两个相连的梯子 2、从一个‘.’到下一个‘.’需要一分钟。而从这个‘.’经过楼梯到楼梯那边的‘.’也是一分钟。 3、如果楼梯暂时过不去,可以停留,等他转到能过再过。根据题意,我们可以将下一步的情况分为以下几种 1、障碍或边界,或者已经走过了,直接返回。 2、‘.’或者‘T’直接走 3、楼梯 ①判断是否能过 ②如果不能就停一分钟因为用的是bfs所以第一原创 2017-05-07 16:17:12 · 374 阅读 · 0 评论 -
hdu-3085(双向bfs)
题目大意: ghosts先每次分裂会覆盖两步之内所有的地方,然后erriyue每次走三步,girl friend每次走一步,ghosts能穿墙,人不能,问erriyue和girl friend是否能在指定的时间内相遇。 特别要注意的是,可以选择不走!不是一定要在那个时刻相遇! 英语渣,没读出来,但看别人的代码又确实是这个意思。我一开始打算让幽灵也bfs,觉得这样不好写,搜网上有人用曼哈顿距离做,原创 2017-05-17 20:36:06 · 1602 阅读 · 2 评论 -
poj3984-bfs模板详解
题目:一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。要求打印最短路线坐标,可以套用bfs模板做的简单题,很适合用来学习bfs,可以自己手动debug一下来体会bfs。其中比较难理解的就是pre[]数组了,可以看做是一个数组模拟的树状结构,用来记录bfs过程中每一次中,上一步和下一步的联系。以这个为例 上一行是最短路线坐标,下原创 2017-04-23 21:49:07 · 476 阅读 · 0 评论 -
蓝桥网 带分数(枚举/dfs)
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714。 还可以表示为:100 = 82 + 3546 / 197。 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分原创 2017-02-09 18:58:30 · 444 阅读 · 0 评论 -
蓝桥杯—剪格子(dfs)
由题意可得从左上角的数开始dfs,途径的数的和等于总和的一半时退出,注意走的时候可以斜着走,当总和为奇数时无法分割,当第一个数即为总和一半时直接输出1。#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int M=15;int m,n,sum=0;int a[M][M],vis原创 2017-04-04 21:14:39 · 548 阅读 · 0 评论 -
hdu3791--二叉搜索树
因为最近在学数据结构,所以这道题用建树的方法做的,比较麻烦,但对于理解二叉搜索树很有帮助。搜索二叉树要么是空树要么是符合以下性质的二叉树: 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树,没有键值相等的节点。根据题意,做这道题时分为建树,建树,判断比较,输出,删除原创 2017-04-11 21:09:39 · 477 阅读 · 0 评论 -
剑指offer 字符串的排列
字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。import java.util.ArrayList;import java.util.Set;import j...原创 2019-08-14 16:22:45 · 225 阅读 · 0 评论