DFS
Datrilla
C语言拷贝人才
展开
-
1018. Public Bike Management (30)
这题弄了两个晚上。理解错误。以为只是去一个有问题的站点,然后我就只弄最尾巴的结果进行比较,结果不是的,后来看了别人的代码,才知道,一路上可能有其他站点不是最优,管理员要在这条最短的路径的站点看看哪一站点带入Takemin与带出Tbackmin。其中整体布局,先TRSDFS()找到最短的路径长度Timemin,再RSDFS()得到Takemin,Tbackmin PS:perfect是half,即Cmax/2; half-full(一半)英语渣渣会被玩死原创 2015-07-17 19:26:09 · 639 阅读 · 0 评论 -
1103. Integer Factorization (30)
输入N K P 输出N = K个数的P次方和; 如果不存在 Impossible; 如果只存在一个就按着非升序每个数的P次方按照样例输出 如果有多个,那么取两个非升序列中小的数更大的那个,比如a4 a3 a2 a1 a0 b4 b3 b2 b1 b0 比较a0?b0,如果a0>b0那么取第一行原创 2015-09-12 22:27:49 · 821 阅读 · 0 评论 -
1087. All Roads Lead to Rome (30)
DFS就是把全部的路走到没有路或者城市都走过了,然后看看当前的才城市是不是到ROM是的话,根据要求 这条路是不是最短,是用当前的这条路countnum=1,属性加成和最短距离更新; 否则和原来的路相等,那么我们就要coutnum++; 并开始判断,当前这条路获得的全部属性加成是不是最大,是覆盖原来的路,更新属性加成; 否则,看看平均个每个路过的城市属性加成是原创 2015-08-18 15:45:23 · 750 阅读 · 0 评论 -
1034. Head of a Gang (30)
输入N K;N个被查的通信记录,成员的总联系时间K; A B 这两个人的通信时间 …… 成员两人以上且总联系时间大于K方成帮派,单人的总通信时间最多为头头 求出帮派个数和每个帮派头头和成员个数; 下面通过DFS深度优先搜索,求出几个连通图,并不断在每个连通图里面找到每个帮派的头头和帮派内的总联系时间(这里的总联系时间是先有重复累加的,所以后面判断要除以二) 用到了map 这个map就是可以用字符当下标用拉(map根据字典序下标[key]自动排好序。 map<string, vector<string>>Gm原创 2015-08-04 12:08:29 · 630 阅读 · 0 评论 -
1064. Complete Binary Search Tree (30)
N个结点,无序; 要求获得 左<中<=右的完全二叉树 首先输入sort排序非降#include<algorithm> 接着buildCBTreeDFS(CompleteBinarySearchTree*CBT, int STar ,int END_1)构建好完全二叉树,当前数组序号从STar到END_1;这里有len=END_1-STar+1个元素, 难点一int GETrightCount( int len)根据长度len获得这些子结点 组建成 子完全二叉树 右边的结点个数 并返回; 然后通过END原创 2015-08-03 00:32:29 · 722 阅读 · 0 评论 -
1099. Build A Binary Search Tree (30)
有N个结点(0-N-1),接下来N个结点的左结点和右结点标号,无为-1;再接下来给出N个要填充的值;填充要点左<中,中<=右; 做法先按非降序排列#include<algorithm> 使用 DFS深度优先搜索中序填充 左-中-右 输出一层一层输出用到BFS广度优先搜索 中-左-右 用到了#include<queue>queue先进先出原创 2015-08-02 10:46:56 · 866 阅读 · 0 评论 -
1068. Find More Coins (30)
N个钱币,要买goal元的东西 接着是乱序的钱币; 求满足可以正好不找零的情况,有给出把零钱最少的用的最多的那条; 没有No Solution 第一个用了DFS,第二个01背包,一个从小到大,找到直接结束;一个从大到小,全结束后如果符合条件,显然是小的覆盖在大的上面原创 2015-08-14 09:36:59 · 715 阅读 · 0 评论 -
1053. Path of Equal Weight (30)
N个结点,M个非叶节点,和为weight N个结点,每个结点的值一行; 接下来M行非叶节点编号 这个编号有几个子结点,接着几个子结点的编号 要求满足从root头到尾的总值为weight;当有多条时,按照同一水平的,值大的在前面原创 2015-08-12 19:03:55 · 619 阅读 · 0 评论 -
1003. Emergency (25)
1003. Emergency (25)时间限制400 ms 内存限制65536 kB 代码长度限制16000 B 判题程序Standard作者CHEN, Yue As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several s原创 2015-07-17 19:41:39 · 973 阅读 · 0 评论 -
1020. Tree Traversals (25)
reaDlnAndCLEAR(int*postorder, int N, int*inorder,int*leftindex,int*rightindex)读入后序、中序 、并初始化假如在中序的对应序号N的左右都没有结点设为-1; BinaryTree(int*postorder, int*roOt, int*inorder, int*leftindex, int*rightindex,int Star,int END)DFS深度优先搜索,后序的*roOt不断的减少,在中序中找到*roOt,看在此次的中序原创 2015-07-29 23:25:36 · 738 阅读 · 0 评论 -
1021. Deepest Root (25)
码了一个多小时,修正了3个小时。在两个DFS的if结束过程中出过错,STAR和id弄混,特殊条件 1 要考虑; 这里用到了 并查集,DFS,template 函数模版,malloc开空间和free释放,用两个一维数组表示的邻接表原创 2015-07-17 16:34:39 · 744 阅读 · 0 评论 -
1043. Is It a Binary Search Tree (25)
N个结点; 接着输入按照先序左中右 输出的队; 判断一下是 左<中<=右或者左<= 中 >右 么?是的话,输出对应的后序遍历 右-左-中;(PS:这里用到了stack 堆栈、后进先出) 否则 NO原创 2015-08-08 15:04:53 · 627 阅读 · 0 评论 -
1006. Tree Traversals - Hard Version (35)
n个结点 中序残缺列 先序残缺列 后序残缺列 求能不能唯一确定一棵二叉树,可以输出中序遍历、先序遍历、后序遍历、层次遍历;每个遍历后面没有多余的空格。 不能唯一确定输出“Impossible” 我一共尝试了5种方法, 一、一种方法是错误的(5个测试点错误); 二、另一种方法考虑没有周全(两个测试点错误); 三、一种方法直接递归(最后一个测试点运行超时) 四。一种方法把递归的拆成两部分,存入多维数组里面(最后一个测试点内存超限)【这个代码中有vector的[]传参】 五、把第三种和第二种部分相结合原创 2015-09-17 17:24:16 · 5339 阅读 · 3 评论