![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
MicZ
这个作者很懒,什么都没留下…
展开
-
HOJ 2576 Simple Calculation 容斥原理(DFS)
输入两个数n,m,再输入一个有n元素的集合x[n]。求从[1,m]中有多少个数,能被x[n]中至少一个数整除。 这题利用了容斥原理。容斥原理在编程中实现起来一般有dfs+剪枝和按位运算两种。按位运算易于调试,但是不适于大数据量。 第一次写还是感觉挺困难的,参考了别人的代码。是用dfs写的。参照他的思路我自己又写了一遍,却总是WA,找了好久也没发现错在哪。。。先贴上来吧。 自己写的原创 2012-08-23 19:59:45 · 1297 阅读 · 0 评论 -
HOJ 1956 Square(DFS+剪枝)
看到题目很容易想到要用DFS,但写出来之后发现TLE了。以为要用其它的算法,百度了下之后发现这题的考点就在于剪枝。 刚开始我只用了两个剪枝:各木棍之和是否能被4整除;是否有木棍的长度大于正方形的边长。 但事实证明还不够。关键的两个剪枝在DFS里面。具体看代码及注释吧。 注意:每一次递归进去,开始搜索的位置的选择,经常是可以进行重要优化的! //DFS+剪枝优化 #include #i原创 2012-09-02 23:56:44 · 363 阅读 · 0 评论 -
HOJ 2064 Journey to Tibet (DFS)
题目中要求只要两个村庄间的距离小于等于30就可以转移。而刚开始我以为这个人最多只能走30,转移的路超过30之后就不能再转移了。刚开始用的BFS,怎么写都超时。后来发现看错题了之后,果断换成了DFS,然后才AC。本来挺简单的一道,浪费了大半天的时间。。不过最后能过掉还是很开心的。。 #include #include #include #include using namespace原创 2012-08-24 16:53:11 · 524 阅读 · 0 评论 -
hoj 1868 八数码(双广+hash)
据说这题的数据不是很强,直接bfs+hash判重即可过。 这里我打算拿它练习一下双广搜索。 用了两个队列,分别从始态和终态进行bfs。 队列中保存的是每一个状态,每一个状态是用一个一维数组保存的。 hash时,把它转化成一个9位的整数,质数取余,拉链法判重。 hash表开成两维的,分别储存两个队列的搜索结果,同时还保存搜到每一个状态所用的step。 每当向hash表的一维里插入新状态时原创 2013-01-19 21:55:51 · 866 阅读 · 0 评论 -
LeetCode Palindrome Partitioning II
class Solution { public: int minCut(string s) { int n = s.size(); bool p [n][n]; memset(p,0,sizeof(bool)*n*n); for(int i = 0;i < n;i++){ p[i][i] = true;原创 2014-03-08 21:01:21 · 588 阅读 · 0 评论