随笔分类 -  数据结构

数据结构 算法
摘要://用点树模拟约瑟夫问题//N个人编号:0,1,2,...N-1,报数:1到M,报到M的出列//www.cnblogs.com/flyinghearts#include<cstdio>template<intN>structRound2k{enum{down=Round2k<N/2u>::down*2,up=down==N?down:2*down};};template<>structRound2k<1>{enum{down=1,up=1};};template<intM,typenameT=int>//区间[0,M)cl 阅读全文
posted @ 2011-03-31 23:19 flyinghearts 阅读(268) 评论(0) 推荐(0)
摘要:思路: 先画一棵完全二叉树, 为节省空间,采用数组来实现。对这棵二叉树,叶子用于存放数据,节点用于统计叶子信息。通过下面的三种方法,进一步节省空间:1 节点只记录左子树叶子信息,右子树叶子信息通过当前节点和父节点等节点的值计算得出。 因而需要指定一个点,当作根节点的“父节点”,以便计算根节点右子树信息。 可以将根节点从1开始编号,对节点i,左孩子编号为2*i,右孩子编号为2*i+1,并用编号0记录整根树所有叶子的信息。2 对某些应用,叶子信息可以通过节点信息计算得出,因而不保存叶子信息,3 完全二叉树,边界要求为2^k,为了表示[0, n)这n个点,需要将n增加到2^k,实际上, 只要第n个叶 阅读全文
posted @ 2011-03-31 23:13 flyinghearts 阅读(1546) 评论(0) 推荐(0)