摘要:
//线段树的节点//节点包括两部分信息,基本域,和信息域//基本域:左右边界ld,rd. 左右孩子:lc,rc//信息域:key值,如RMQ问题中,信息域中存储的是区间最大值struct Node{ int ld,rd; Node *lc,*rc; int key;};//空树的建立,内含key值的初始化;//一般在主函数中首先调用 Node* root= buildtree(1,n);建立一棵新树Node *buildtree(int a,int b){ Node * p=new Node;//给P申请一块内存 p->ld=a; p->rd=b; //{初始化 p->key 阅读全文
摘要:
给定k个序列s1,s2,s3,...,sk,用二路合并方法将k个序列合并为一个。假设将任意两个长度分别为n和m的序列合并为一个需要的代价是m+n-1,设计一个算法来确定合并这些序列的合并为一个的最大代价和最小代价。#include<iostream>using namespace std;void swap(int &a ,int &b){ int temp=a; a=b; b=temp;}//返回数组arr[]的最大值void maxSink(int arr[],int n,int i){ int child; int j=i; while(j<=n/2){ 阅读全文