03 2017 档案

摘要:#include int book[10001]; int add[4]; int one[10001]; int two[10001]; void fun(int x){ int temp=x; int y=x; int t=0; while(x){ add[t]=x%10; t++; x=x/10; } ... 阅读全文
posted @ 2017-03-27 20:34 Mr.Struggle 阅读(202) 评论(0) 推荐(0)
摘要:思路:题目是很简单的DFS。求出能走到的"."。因此我们完全不需要回溯,只需要遍历下去,每递归一次则结果+1,最后得出答案。 阅读全文
posted @ 2017-03-27 14:46 Mr.Struggle 阅读(194) 评论(0) 推荐(0)
摘要:思路:深度搜索全排列,将每两个相连的结果做成表格,得出最小。 阅读全文
posted @ 2017-03-27 12:18 Mr.Struggle 阅读(586) 评论(0) 推荐(0)
摘要:题目大意:有一个4*4的方格,每个方格中放一粒棋子,这个棋子一面是白色,一面是黑色。游戏规则为每次任选16颗中的一颗,把选中的这颗以及它四周的棋子一并反过来,当所有的棋子都是同一个颜色朝上时,游戏就完成了。现在给定一个初始状态,要求输出能够完成游戏所需翻转的最小次数,如果初始状态已经达到要求输出0。 阅读全文
posted @ 2017-03-24 12:15 Mr.Struggle 阅读(219) 评论(0) 推荐(0)
摘要:在一个map[100][100]中0代表空地,1代表人。僵尸能够上下左右感染,每五秒感染成功一次,求出最后感染需要的时间,即存活的人。 阅读全文
posted @ 2017-03-23 14:34 Mr.Struggle 阅读(382) 评论(0) 推荐(0)
摘要:本题目的主要难点在如何寻找最后一层的数,利用book标记数组可以很好的解决问题。book=0的时候说明没被连接过,若要连接时,将book等于上一层book+1. 需要注意的是,对于图的问题建立邻接矩阵是非常省时间的方法。类似这个道题,我没有用邻接矩阵,因此每次都要进入150的for循环。但是如果用矩 阅读全文
posted @ 2017-03-22 15:49 Mr.Struggle 阅读(250) 评论(0) 推荐(0)
摘要:在正方形的矩阵中,可以向8个方向移动,给出起点和终点,求出最快到达终点的步数。 阅读全文
posted @ 2017-03-22 13:35 Mr.Struggle 阅读(205) 评论(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 阅读(209) 评论(0) 推荐(0)
摘要:题目数据范围10000,因此简单的DFS会超时,所以要格外注意剪枝。 1.半径r,与高h都从n+1,开始搜索。 2.当前的表面积,加上之后层的预估最小表面积,若大于最优解,减掉。 3.当前的体积,加上之后层的预估最小体积,若大于最优解,减掉。 4.DFS中,若体积超出限制n,则减掉。 5.(目前体积 阅读全文
posted @ 2017-03-21 14:52 Mr.Struggle 阅读(799) 评论(0) 推荐(0)
摘要:如果想在DFS过程中计算油田个数会很麻烦,所以要简化思想。我们可以把每一个油田当成一次DFS(只对"@"的进行DFS,这样每当DFS退出时,表示一块油田搜索完毕 ),这样每次DFS后油田数加一,最后输出结果。 阅读全文
posted @ 2017-03-21 10:58 Mr.Struggle 阅读(175) 评论(0) 推荐(0)
摘要:先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树。这样再去先序遍历中找到左子树的根节点,然后再依靠中序遍历找到左子树的左子树(右子树同理)。这样层层递归就能还原二叉树。之后求出后序遍历。 感谢原 阅读全文
posted @ 2017-03-20 15:58 Mr.Struggle 阅读(368) 评论(0) 推荐(0)
摘要:这道题目的难点是理解最多有2^16次方种可能,需要理解每个棋子只能翻一次或者不翻。这么这道题目就可以用DFS暴力解决! 阅读全文
posted @ 2017-03-17 08:27 Mr.Struggle 阅读(263) 评论(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 阅读(376) 评论(0) 推荐(0)
摘要:题目的意思是在一个由ox组成的数组中,输出o,o,x....x,o,o,x.....x,o的个数,其中x.....x表示最少一个x,同时每个字符只能使用一次(难度略降低)。 代码如下 阅读全文
posted @ 2017-03-16 13:58 Mr.Struggle 阅读(268) 评论(0) 推荐(0)
摘要:这是我第一次遇到的BFS问题,因为要学习编程,F同学帮我找了一些搜索的题目,做到这个问题的时候感觉无法使用DFS来写,因为他可能是个无底洞。因为当时没有学习过BFS,所以网上搜索了下发现了也是一位第一次碰到BFS题目就是C - Catch That Cow的博主,学习了他的代码,他的代码解释很清楚。 阅读全文
posted @ 2017-03-15 23:45 Mr.Struggle 阅读(2051) 评论(0) 推荐(0)
摘要:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将 阅读全文
posted @ 2017-03-15 10:12 Mr.Struggle 阅读(230) 评论(0) 推荐(0)