BFS
Datrilla
C语言拷贝人才
展开
-
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 · 752 阅读 · 0 评论 -
1094. The Largest Generation (25)
输入:N(这个家族的总成员数) M(有几个人有子嗣)M行(父节点编号) father count(几个子结点) child1 child2……childcount(对应子结点编号)……求哪一辈份的人数最多,是哪一代。这里默认祖宗为编号1,祖宗为第一代;这里用BFS层遍历数个数;找出人数最多的那一代。我一开始开动态数组的时候开太小,vs就报错。原创 2015-08-19 10:34:29 · 1017 阅读 · 3 评论 -
1090. Highest Price in Supply Chain (25)
零售商+经销商+厂商=N(代号0~N-1) 厂家直销价格p 每次转手价格增加百分之rN个数(代表0~N-1从对应的代号买的,当数为-1,说明这家是厂家)求消费者可以预期到最高价格是多少,并给出count家卖的价格是这个最高的原创 2015-08-18 21:30:34 · 884 阅读 · 0 评论 -
1091. Acute Stroke (30)
下面两个代码的区别是一个用了符号重载;M N L T(L个M行N列的长方体)接着就是L个M行N列的输入;0代表正常,1代表异常;而造成病变的,是一块的异常总数>=T; PS:一块的意思是只要上下左右前后有是异常的就加起来。这里用的是BFS,对于每个左标,进行上下左右前后,在范围内的异常的进行累加,并扩展的一块之外都是正常,然后看看这一块的异常总数是不是>=T;是就是病变加到core里面 vector<vector<vector<bool>>>cuboid(L);长方体 vector< i原创 2015-08-19 00:42:58 · 649 阅读 · 0 评论 -
1079. Total Sales of Supply Chain (25)
工厂只有一家,默认编号root=0;工厂供货商+经销商+零售商=N(PS:编号0~N-1) 工厂直销价钱p 每经过一次转手增加的百分之r(比如买的时候p,转手卖给下一家为p=p*(100+1)/100)接着N行(代表编号0~N-1的买或卖),这N行形式有两种【一种: 0 买的个数count; 【另一: 卖给num个 接着num个来买的人的编号id1 id2……idnum;求出那些买的【入手价钱*原创 2015-08-17 11:07:27 · 653 阅读 · 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 · 736 阅读 · 0 评论 -
1004. Counting Leaves (30)
这题看了很久很不懂在说甚么,就百度汉化版,原来是有一棵树,然后看看每一层有几个叶子结点(即没有子结点的点),然后一个个输出。结果弄完能是找不出哪里有误,用了别人的测试样例才发现是函数TreeBFS()中Nosign == Father[nowID].index写错成Nosign ==Child[Index].frontindex;这一题我用到了数组邻接表和广度优先搜索还有queue(先进先出)。这一题是只有一棵树,我TreeBFS的前面用于处理找到树根,假如不只一棵数,应该也是可以的吧。原创 2015-07-22 23:03:04 · 1324 阅读 · 3 评论 -
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 · 881 阅读 · 0 评论 -
1076. Forwards on Weibo (30)
这题是2014-06-18 做的,这次PAT培训发现题目一样就交了一下;顺便当初编辑。然后我又写了个dfs的,结果还是有一个超时。这个ac的属于Bfs的,这题显然适合Bfs,但是当初我还没学,就用的矩阵代替邻接表使用。Bfs可以使用queue,然后count代码排列顺序原创 2015-07-17 16:46:00 · 596 阅读 · 0 评论 -
1102. Invert a Binary Tree (25)
N个结点(编号0~N-1;N不超过10)接着N行分别为编号0~N-1对应点的 右结点编号 左结点编号(如果没有结点就是-)要求输出这个二叉树的层次遍历的 、中序遍历的这是这次pat2015中25分的,也是这次pat考试中唯一一个ac并且一次就ac的原创 2015-09-12 20:53:10 · 938 阅读 · 0 评论