GT

C/C++ 第八周二叉树 (一)二叉树算法库—项目1

核能气质少年 提交于 2020-04-06 13:06:56
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqqueue.h sqqueue.cpp *作者:黄士胜 *完成日期:2017年11月11日 *版本号:v1.0 * *问题描述: 二叉树的链式存储算法库采用程序的多文件组织形式 *输入描述:无 *程序输出:见运行结果截图 */ 问题描述: 二叉树的链式存储算法库采用程序的多文件组织形式 主函数如下: #include <stdio.h> #include "../btree.h" int main() { BTNode *b,*p,*lp,*rp;; printf(" (1)创建二叉树:"); CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); printf("\n"); printf(" (2)输出二叉树:"); DispBTNode(b); printf("\n"); printf(" (3)查找H节点:"); p=FindNode(b,'H'); if (p!=NULL) { lp=LchildNode(p); if (lp!=NULL) printf("左孩子为%c ",lp->data); else printf("无左孩子 "); rp=RchildNode(p); if

python的functools进阶模块

旧时模样 提交于 2020-04-06 12:59:10
Python-进阶-functools模块小结 functools.partial functool.update_wrapper functool.wraps functools.reduce functools.cmp_to_key functools.total_ordering 文档 地址 functools.partial 作用: functools.partial 通过包装手法,允许我们 "重新定义" 函数签名 用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待 冻结部分函数位置函数或关键字参数,简化函数,更少更灵活的函数参数调用 #args/keywords 调用partial时参数 def partial ( func , * args , ** keywords ): def newfunc ( * fargs , ** fkeywords ): newkeywords = keywords . copy () newkeywords . update ( fkeywords ) return func ( * ( args + fargs ), ** newkeywords ) #合并,调用原始函数,此时用了partial的参数 newfunc . func = func newfunc . args = args newfunc

第3周 【项目4】 顺序表应用

可紊 提交于 2020-04-06 12:54:41
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月7日 *版本号:v1.0 *问题描述:定义一个采用顺序结构存储的线性表,设计算法完成下面的工作: 1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1); 2、将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。 一、对问题1的解决:建立一个新的工程,编辑头文件list.h #ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED #define MaxSize 50 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList; void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表 void InitList(SqList *&L);//初始化线性表InitList(L) void DestroyList(SqList *&L);//销毁线性表DestroyList(L) bool ListEmpty(SqList *L);/

UVA ~ 714 ~ Copying Books(二分+最大值最小化)

霸气de小男生 提交于 2020-04-06 12:50:53
题意: 给你K本书分给M个人抄,这M个人抄书的速度相同,每个人抄的书的编号必须连续,问怎么划分可以最快的抄完这M本书? 思路: 典型的最大值最小化的问题,二分答案,对于当前答案看能否分成M段或者小于M段,求一个满足要求的下界值。主要是判断函数怎么写?首先我们会进行一段一段的划分,因为题目中要求当剩余元素等于字典序最小,所以我们应该让后面的段尽量多,所以我们就从后面往前划分。划分时有三种情况 <1>未划分的段数等于未划分的元素个数,此时应该每个元素一段,证明当前值可行返回true <2>当前段中的总值小于等于当前二分的答案M,我们就继续往这个段添加元素,如果大于我们就将i+1及其后面的元素划分为一段(因为是从后往前划分的) <3>需要划分的段数大于M就证明当前值不可行返回false #include<bits/stdc++.h> using namespace std; const int MAXN = 5e2 + 5; long long k,M,a[MAXN],Max; bool vis[MAXN];//标记在哪个数字后面划段 bool check(long long m) { memset(vis,0,sizeof(vis)); long long sum = a[k - 1],group = 1;//sum用来计算当前段的和,group用来记录当前正在分第几段 for(int

codeForces 165B.Burning Midnight Oil(二分)

て烟熏妆下的殇ゞ 提交于 2020-04-06 12:43:44
题意: 给你两个整数字N,K。N表示有个人要写N行东西,K是跟他的写东西效率有关的一个系数。这个人写东西写一会就累了就必须喝杯茶再写,他的效率会越来越低。需要求一个V值,V表示他依次能写 等等,当这个值为零时他就睡着了。问你V最小为多少时,他才能写完这N行东西? 思路: 二分一个V值,求出当前情况下可以写的行数sum如果小于N就继续二分大于V的部分,如果大于N就继续二分不大于V的部分,看V是否能够更小,如果等于V就跳出。 #include<bits/stdc++.h> using namespace std; int n,k; int check(int v) { long long t = k,sum = v; while(t <= n) { sum += v / t; t *= k; } return sum; } int main() { while(~scanf("%d%d",&n,&k)) { int l = 1,r = n,m = l + (r - l) / 2; while(l < r) { if(check(m) < n) l = m + 1; else r = m; m = l + (r - l) / 2; } printf("%d\n",m); } return 0; } 点赞 收藏 分享 文章举报 张松超 发布了646 篇原创文章 · 获赞 57 · 访问量

第5周 【项目3】 括号的匹配

元气小坏坏 提交于 2020-04-06 12:35:37
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月14日 *版本号:v1.0 *问题描述: 假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。 一、创建一个新的工程,以顺序栈数据库为基础建立头文件: #ifndef SQSTACK_H_INCLUDED #define SQSTACK_H_INCLUDED #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈指针 } SqStack; //顺序栈类型定义 void InitStack(SqStack *&s); //初始化栈 void DestroyStack(SqStack *&s); //销毁栈 bool StackEmpty(SqStack *s); //栈是否为空 int StackLength(SqStack *s); //返回栈中元素个数——栈长度 bool Push(SqStack *&s

C/C++ 第七周栈和队列 (二)队列 项目二

纵饮孤独 提交于 2020-04-06 12:32:46
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqqueue.h sqqueue.cpp *作者:黄士胜 *完成日期:2017年10月11日 *版本号:v1.0 * *问题描述:定义链队存储结构,实现基本的算法。 *输入描述:无 *程序输出:见运行结果截图 */ 参照项目一完成了此项目。 主函数: #include <stdio.h> #include "../liqueue.h" int main() { ElemType e; LiQueue *q; printf("(1)初始化链队q\n"); InitQueue(q); printf("(2)依次进链队元素a,b,c\n"); enQueue(q,'a'); enQueue(q,'b'); enQueue(q,'c'); printf("(3)链队为%s\n",(QueueEmpty(q)?"空":"非空")); if (deQueue(q,e)==0) printf("队空,不能出队\n"); else printf("(4)出队一个元素%c\n",e); printf("(5)链队q的元素个数:%d\n",QueueLength(q)); printf("(6)依次进链队元素d,e,f\n"); enQueue(q,'d');

ElasticSearch常用操作

雨燕双飞 提交于 2020-04-06 12:32:25
head插件安装(google)本地访问地址:http://127.0.0.1:9200/_plugin/head/ RESTful接口URL的格式: http://localhost:9200/<index>/<type>/[<id>] 1、使用对应分词器进行分析: url:http://127.0.0.1:9200/i_entity/_analyze?analyzer=pinyin&pretty=true body:{"text":"中国人民"} method:POST 2、 索引文档的创建: url:http://127.0.0.1:9200/song001/list001/1 body:{"number":32768,"singer":"杨坤","size":"5109132","song":"今夜二十岁","tag":"中国好声音","timelen":319} method:PUT 3、索引文档的查询: url:http://127.0.0.1:9200/song001/list001/1 method:GET 4、索引文档的更新(和创建是一样的,索引版本递增;created字段是false,表示这次不是新建而是更新) url:http://127.0.0.1:9200/song001/list001/1 body:{"number":32768,"singer":

SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版

早过忘川 提交于 2020-04-06 12:25:02
前言 在上篇中介绍了 SpringCloud Config 的使用,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的分布式配置中心(SpringCloud Config)的配置刷新和消息总线(RabbitMQ和Kafka)使用教程。 SpringCloud Config Refresh 在上一篇中我们介绍了springcloud配置中心的本地使用和Git使用的用法,但是当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,需要客户端重启才可以获取最新的信息。因此我们需要客户端能够动态进行更新,幸好springcloud官方已经给出方案,所以我们只需要使用就行了。 开发准备 开发环境 JDK :1.8 SpringBoot :2.0.6.RELEASE SpringCloud :Finchley.SR2 注:不一定非要用上述的版本,可以根据情况进行相应的调整。需要注意的是SpringBoot2.x以后,jdk的版本必须是1.8以上! 确认了开发环境之后,我们再来添加相关的pom依赖。 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config<

第三周 【项目3】 求集合并集

≡放荡痞女 提交于 2020-04-06 12:20:42
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月7日 *版本号:v1.0 *问题描述: 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数 unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。 一、头文件list.h #ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED #define MaxSize 50 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList; void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表 void InitList(SqList *&L);//初始化线性表InitList(L) void DestroyList(SqList *&L);//销毁线性表DestroyList(L) bool ListEmpty(SqList *L);/