摘要: 本题目的主要难点在如何寻找最后一层的数,利用book标记数组可以很好的解决问题。book=0的时候说明没被连接过,若要连接时,将book等于上一层book+1. 需要注意的是,对于图的问题建立邻接矩阵是非常省时间的方法。类似这个道题,我没有用邻接矩阵,因此每次都要进入150的for循环。但是如果用矩 阅读全文
posted @ 2017-03-22 15:49 Mr.Struggle 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 在正方形的矩阵中,可以向8个方向移动,给出起点和终点,求出最快到达终点的步数。 阅读全文
posted @ 2017-03-22 13:35 Mr.Struggle 阅读(199) 评论(0) 推荐(0) 编辑
摘要: #include int shangpin[20]; int p[10][4]; int vlue; int data[10]; int n,m; void dfs(int step,int money){ if(step==n){ if(money>vlue) vlue=money; return; } for(int j=0;j... 阅读全文
posted @ 2017-03-21 17:21 Mr.Struggle 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目数据范围10000,因此简单的DFS会超时,所以要格外注意剪枝。 1.半径r,与高h都从n+1,开始搜索。 2.当前的表面积,加上之后层的预估最小表面积,若大于最优解,减掉。 3.当前的体积,加上之后层的预估最小体积,若大于最优解,减掉。 4.DFS中,若体积超出限制n,则减掉。 5.(目前体积 阅读全文
posted @ 2017-03-21 14:52 Mr.Struggle 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 如果想在DFS过程中计算油田个数会很麻烦,所以要简化思想。我们可以把每一个油田当成一次DFS(只对"@"的进行DFS,这样每当DFS退出时,表示一块油田搜索完毕 ),这样每次DFS后油田数加一,最后输出结果。 阅读全文
posted @ 2017-03-21 10:58 Mr.Struggle 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树。这样再去先序遍历中找到左子树的根节点,然后再依靠中序遍历找到左子树的左子树(右子树同理)。这样层层递归就能还原二叉树。之后求出后序遍历。 感谢原 阅读全文
posted @ 2017-03-20 15:58 Mr.Struggle 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 这道题目的难点是理解最多有2^16次方种可能,需要理解每个棋子只能翻一次或者不翻。这么这道题目就可以用DFS暴力解决! 阅读全文
posted @ 2017-03-17 08:27 Mr.Struggle 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目的是随机拿6张卡牌,卡牌上有0~9的数字。一种情况有三张连续的卡牌我们称之为run(类似4,5,6),第二种情况有三张相同卡牌我们称之为triplete(类似2,2,2)。 如果这六张牌有两个run或者两个triplete或者一个run一个triplete。我们称之为baby-gin。 例如 6 阅读全文
posted @ 2017-03-16 15:18 Mr.Struggle 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题目的意思是在一个由ox组成的数组中,输出o,o,x....x,o,o,x.....x,o的个数,其中x.....x表示最少一个x,同时每个字符只能使用一次(难度略降低)。 代码如下 阅读全文
posted @ 2017-03-16 13:58 Mr.Struggle 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 这是我第一次遇到的BFS问题,因为要学习编程,F同学帮我找了一些搜索的题目,做到这个问题的时候感觉无法使用DFS来写,因为他可能是个无底洞。因为当时没有学习过BFS,所以网上搜索了下发现了也是一位第一次碰到BFS题目就是C - Catch That Cow的博主,学习了他的代码,他的代码解释很清楚。 阅读全文
posted @ 2017-03-15 23:45 Mr.Struggle 阅读(2032) 评论(0) 推荐(0) 编辑