c++代码
文章平均质量分 54
我已经怒不可遏了!
你觉得我会勤快到写简介?
展开
-
二叉树的非递归调用
前序遍历将左边孩子全放进栈并输出,遇到空的就访问栈的头节点的右孩子(如此往复直到找到有右孩子的节点。)代码如下:void presq(bitree s) { stack<bitree> t; bitree v; bitree k; v = s; while (v||!t.empty()) { if (v) { cout << v->e; t.push(v); v = v->l; } else { v = t.top(.原创 2021-06-06 20:03:46 · 134 阅读 · 0 评论 -
全排列(超简单递归)
将n个数进行全排列话不多说,直接给代码:#include<iostream>#include<string>#include<algorithm>#include<string.h>#include<stdio.h>#define bug(a) (cout<<"*"<<a<<endl)#define bugg(a,b) (cout<<"*"<<a<<' '.原创 2021-05-30 21:31:19 · 137 阅读 · 0 评论 -
赫夫曼树(最优二叉树)
哈夫曼树介绍概念哈夫曼树是最优二叉树的别名,他通过每个叶子节点算权值和,取最小权值和的那棵树便是哈夫曼树。如何实现将所有数排成一个数组内,找到其质量(他的价值)最小的两个,将其合成一颗树,左边是最小的,右边是第二小的,然后将其质量相加便是这颗新树的质量。然后再次搜索,找到质量最小的两个,一直往复直到只剩下一棵树,那便是哈夫曼树。代码如下:#include<iostream>#include<iomanip>//这是输出格式的头文件#define bug(a) (.原创 2021-05-25 14:18:25 · 227 阅读 · 0 评论 -
二分查找
二分查找题目列表铺公路伐木工方程组求解二分就是求一个区间的值,通过二分来使他更快的找到,取左右两边的数,使满足条件后令其中值等于左值(右值)(具体看情况)然后当满足条件(l+1<r)时跳出(有特殊情况是在l<r时跳出,如:l=m+1时,因为值在增加,所以不用l+1<r)。题目如下:铺公路B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离.原创 2021-05-23 20:06:15 · 200 阅读 · 0 评论 -
代码笔记
题目目录(1)晨跑(2)未定(1)晨跑题目大意:输入一个数为样例次数再输入两个数n,m(n表示每条路的疲劳值,m表示有几个选手)每个选手都需要跑过每条路,最后要使每条路的所有人的疲劳值的最小值相加最小,输出任意情况。思路:将最小的m个疲劳值排序,取m个,再将其排进去按0到m-1排过去但是原本在哪一行的疲劳值不能去其他行,可以令其行不变但是其列的位置改变,使其成为那一列的最小值。题目链接下面引入一个概念(pair)这个函数可以一开始便创建然后赋值例如#include <io原创 2021-04-27 20:01:36 · 203 阅读 · 0 评论 -
指针链表
指针链表先进先出链表把p指针指向L的头指针,然后创建q指针的空间,进行赋值,再把p指针的下一位取q,再然后把p指针后移,最后结束的时候加一个p->next=NULL;#include<bits/stdc++.h>#define bug(a) (cout<<'*'<<a<<endl)using namespace std;typedef struct node{ int data; node* next;}*linklist;vo原创 2021-04-11 20:00:32 · 291 阅读 · 0 评论