随笔分类 - 数据结构
摘要:1 #include 2 #include 3 typedef struct node *btlink; 4 struct node 5 { 6 int data; 7 btlink left; 8 btlink right; 9 int t; 10 }; 11 12 btlink BT; 13 void insert(btlink q, i...
阅读全文
摘要:开始一个数 开始一个数 开始一个数 n,(1 3 #include 4 #include 5 typedef struct node *btlink; 6 struct node 7 { 8 int data; 9 btlink left;10 btlink right;11 };12 btlink BT,NewBT;13 char s1[11],s2[11];14 btlink insert(btlink root,int x)15 {16 btlink q;17 q=(btlink)malloc(sizeof(node));18 q->lef...
阅读全文
摘要:算法实际上是模仿快速排序算法设计出来的,其基本思想也是对输入数组进行递归划分,与快速排序不同的是,它只对划分出来的子数组之一进行递归处理;int randompartition(int a[],int l,int r){ int i=l-1,j=r,v=a[r],tmp; for(;;) { while(a[++i]v)if(j==l)break; if(i>=j)break; tmp=a[i]; a[i]=a[j]; a[j]=tmp; } tmp=a[i];a[i]=a[r];a[r]=tm...
阅读全文
摘要:题意关键句:搜集足够的材料确保两种制作方式都能满足.31 3 133 3 1编号1至少收集2个,编号3至少收集2个,才能同时满足两种方法。因为不知道编号到底有多大,用位向量表示集合的无法判断需要开多少位。而有序链表恰恰弥补这个缺点。 1 #include 2 #include 3 typedef struct node *link; 4 struct node 5 { 6 int data;//数据域 7 link next; 8 }Node; 9 typedef struct list *Set; 10 struct list 11 { 12 li...
阅读全文
摘要:用链表来表示集合时,链表的中的每个项表示集合的一个成员,表示集合的链表所占用的空间正比于所表示的集合的大小,而不是正比于全集合的大小,因此,链表可以表示无穷全集合的子集。 链表分为无序链表和有序链表两种类型。 以下为有序链表实现代码:
阅读全文
摘要:问题描述: 大部分正整数可以表示2个以上连续整数之和。如:6=1+2+3,9=5+4=2+3+4; 实验任务: 连续整数和问题要求计算给定的正整数可以表示为多少个2以上连续整数之和。 解题过程: 一个数M若可以写成以a开头的连续n个自然数之和,则M=a+(a+1)+(a+2)+…+(a+n-1)=n
阅读全文
摘要:题目描述: 哥德巴赫猜想:任何大偶数均可以表示为2个素数之和。 实验任务: 验证哥德巴赫猜想。计算给定的大偶数可以表示为多少对素数之和。例如,大偶数10,可以表示为2对素数3,7和5,5之和; 解题思路:构造素数表;
阅读全文
摘要:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 定义 字典树的建立插入 数据结
阅读全文
摘要:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 归并排序是稳定排序,它也是一
阅读全文
摘要:问题描述: 给定二叉树,前,中,后序列表中的某两种,能否唯一确定一棵二叉树?
阅读全文
摘要:玩家从n 个点n-1 条边的图,从节点1 丢下一个小球,小球将由于重力作用向下落,而从小球所在点延伸出的每一条边有一个值pi 为小球通过该条边的概率(注意从同一个节点向下延伸的所有边的pi 的和可以小于1,也可以大于1,并且保证对于单独的一条边不会出现pi>1 的情况),而对于所有处于最下方的节点(如图红点所示)都可以有一个值vi,代表玩家可以获得的奖励。现在老板给你这样一张图,之后给你n 个vi 的值,老板希望玩家可以获得的奖励的期望值最小。(对题目不理解可以参见样例)Ps:小球不会逆着重力往回滚QAQ。保证所给出的图无重边。★数据输入输入第一行为一个正整数N (2 =vi>0)
阅读全文
摘要:鼹鼠们排成一列,由第一个开始向下挖洞,并待在洞中。第二只与第一只相比,若能力 值大的胜者,则向右下方挖洞。否则向左下方。接下来的鼹鼠们以此类推,若比洞中所在鼹鼠能力值高,则向右下方走,否则向左下方。 总经理想知道,经过挑战赛之后,鼹鼠们的位置是怎样的。位置表达式规则为:“<左子树表达式>根节点<右子
阅读全文
摘要:1 typedef struct btnode *btlink;//二叉树结点结构定义 2 struct btnode 3 { 4 int data; //储存结点标号 5 btlink left; //指向左子树的指针 6 btlink right; //指向右子树的指针 7 }B...
阅读全文
摘要:count[0]存着左括号数目,count[1]存着右括号数目。一开始kind中压入左括号,因为第一个肯定是左括号。然后count数组初始化为n-1个左括号,n个右括号。然后我们递归的处理。如果剩余左括号数count[0]大于0,就可以把左括号压栈。而对于右括号,栈中左括号个数必须多于右括号个数,也
阅读全文
摘要:卡特兰数又称卡塔兰数, 英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786
阅读全文
摘要:1 #include 2 int combination(int n,int m) 3 { 4 int zhi; 5 if(m==0||n==m) 6 return 1; 7 else 8 zhi=combination(n-1,m-1)+combination(n-1,m); 9 return zhi; 10 ...
阅读全文
摘要:1 #include 2 3 4 5 /******************************* 6 快排 7 *************************************/ 8 int quicksort_up(int a[],int f1,int f2) ...
阅读全文