c语言
young_Tao
这个作者很懒,什么都没留下…
展开
-
9.4阿里笔试,第二题
题意大概是给定一棵树,任意删掉一个叶子节点到根节点路径上的结点,得到一个森林,求得到最大森林数。示例:71 21 32 42 53 63 7得到如下所示的树:删掉叶子节点4到根节点1的路径上的结点1->2->4,剩下两棵树:5和(3, 6, 7)删除其他叶子节点最大也只能获得两棵树,所以最后结果输出2。本人解法我的解法是首先定义post用来记录每一个节点的父节点,比如post[4] = 2。然后找到叶子节点存到vector yezi中,这里显然是(4, 5, 6,原创 2020-09-04 10:21:19 · 259 阅读 · 3 评论 -
c++ vector扩容时,内存分配的问题
vector扩容时,内存如何分配当vector分配的内存不够时,系统会分配2倍于之前的内存空间,将原先内存中的数据原封不动的搬过去。那么新的大内存空间是如何选择的呢?是直接在旧空间后边连续的2倍空间,还是任意空闲区域的空间呢?下面根据实验结果来说明:#include<iostream>#include<vector>using namespace std;void mycapacity(const vector<int>& vec){ cou原创 2020-08-25 22:14:34 · 1561 阅读 · 0 评论 -
堆的定义和基本操作代码
//85 55 82 57 68 92 99 98 66 56#include<iostream>#define maxn 1000using namespace std;int heap[maxn];int n = 10;//big - topvoid downjust(int low, int high){ int i = low, j = 2*i;...原创 2018-08-12 20:12:23 · 229 阅读 · 0 评论 -
c++STL库容器之map
map简介Map是STL的一个关联容器,它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织...原创 2018-04-05 11:12:50 · 2058 阅读 · 0 评论 -
c++ STL容器之栈stack
Stack简介C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。 Stack初始化stack<int> s;通过s.push() 为栈赋值,如s.push(1); stack常用函数 这里我们着重讲解函数swap():先看一段代码://以下代码用来测试swap()函数的作用 stack<i...原创 2018-04-04 21:08:37 · 505 阅读 · 0 评论 -
c++ STL库容器之向量vector
vector简介vector向量是一种顺序行容器。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定。当存储的数据超过分配的空间时vector 会重新分配一块内存块,但这样的分配是很耗时...原创 2018-04-04 20:20:46 · 386 阅读 · 0 评论 -
回文数判定
给定一个字符串,判定是否是回文数,如abcba是回文数,abc不是实例输入abcba实例输出abcba是一个回文数代码:/*本实验完成验证一个字符串是否为回文字符串*/#include #include #include#include#define max 10int top = 100;void init_sta原创 2017-11-18 20:36:35 · 432 阅读 · 0 评论 -
数制转换
任意给定一个正整数n,再输入一个正整数m,返回n的m进制表示示例输入102示例输出1010(二进制下的10)代码如下:/*本程序完成对给定一个十进制数进行任意进制的转换*/#include #include #define false 0#define true 1int top = 100;void init_s原创 2017-11-18 20:30:51 · 335 阅读 · 0 评论 -
用递归算法求解汉诺塔问题
古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小 不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子 始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求输出移动的步骤。本题可以使用递归的思想,移动n个可以分解为先移动n-1个,然后移动剩下的一个,具体的代原创 2017-10-30 23:28:43 · 1570 阅读 · 0 评论 -
一组数排序
小伙伴们刚接触到c语言编程时,排序肯定是会经常遇到的问题类型,这里贴出冒泡排序和选择排序的代码冒泡排序bubble_sort :动态感觉上是最大值(或最小值)经过依次遍历后,不断下沉(或上浮)出来。第一次遍历,这组数最大的(或最小值)显现出来,出现在数组的开头或结尾,然后可以对剩下的数组在进行一遍操作,这样慢慢的最值依次被选出并排好序。选择排序select_sort :顾名思原创 2017-10-20 21:25:10 · 1018 阅读 · 0 评论 -
求建筑高度
#include #include int main(){ double x , y; int h; scanf("%lf %lf",&x,&y); if((x - 2)*(x - 2) + (y - 2)*(y - 2) <= 1 || (x - 2)*(x - 2) + (y + 2)*(y + 2) <= 1 || (x + 2)*(x + 2) +原创 2017-09-20 17:40:14 · 1148 阅读 · 0 评论 -
成绩转换
#include #include int main(){ int mark; scanf("%d",&mark); if(mark >= 90 && mark <=100){ printf("A"); }else if(mark >= 80 && mark <=89){ printf("B"); }else if(mark >= 70 &&原创 2017-09-20 17:38:27 · 347 阅读 · 0 评论 -
是该年的第几天
#include #include int main(){ int y , m , d , days = 0; scanf("%d-%d-%d",&y , &m, &d); if( (y%4==0 && y%100!=0) || (y%100 == 0 && y%400 == 0) ){ if(m == 1){ days = d; } if(m == 2原创 2017-09-20 17:36:56 · 285 阅读 · 0 评论 -
c++STL库容器之集合set
set 简介set是STL中一种标准关联容器,其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_inters...原创 2018-04-06 10:37:04 · 442 阅读 · 0 评论 -
PAT - A1034 - Head of a Gang代码
#include<iostream>#include<string>#include<map>using namespace std;const int maxn = 2010;const int INF = 1000000000;map<int, string> intToString;map<string, int>...原创 2018-08-14 19:09:26 · 199 阅读 · 0 评论 -
动态规划求解数塔问题 代码
/*558 312 7 164 10 11 69 5 3 9 4*/#include<iostream>#define maxn 1000using namespace std;int dp[maxn][maxn]; //dp[i][j]表示第i行第j列出发到达最底层的所有路径中的最大和int maze[maxn][maxn]; //这里若是ma...原创 2018-08-14 19:35:04 · 2085 阅读 · 0 评论 -
7-1 宿舍谁最高?
题目描述:学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。输入格式:首先输入一个整型数n (1<=n<=1000000),表示n位同学。紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。宿舍号的区间为[0,999999], name 由字母组...原创 2019-09-27 19:22:30 · 1722 阅读 · 1 评论 -
6-3 创建CPU
题目描述:定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性。其中,rank为枚举类型CPU__Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。函数接口定义:根据题目要求写出类。裁判测试程序样例:/* 请在这...原创 2019-09-27 19:21:28 · 4311 阅读 · 1 评论 -
6-2 学生成绩的快速录入(构造函数)
题目描述:现在需要录入一批学生的成绩(学号,成绩)。其中学号是正整数,并且录入时,后录入学生的学号会比前面的学号大;成绩分两等,通过(Pass,录入时用1代表),不通过(Fail,录入时用0代表)。由于很多学号都是相邻的,并且学号相邻的学生成绩常常相同。所以在录入时,适当地加了速。如果当前学生的学号比前面的学号大1,且成绩与前面的成绩相同,则只输入0即可。类定义:完成Studen...原创 2019-09-27 19:20:23 · 1660 阅读 · 0 评论 -
6-1 类的声明与成员函数的实现--Car类
最近c++课程布置了第一次作业,虽然之前一直在用c++刷题,但是仔细想想好像从来没有系统的学过,趁这个机会好好过一遍。下面是题目要求:本题要求根据给定的Car类的声明,实现其成员函数。类和函数接口定义:class Car //定义类Car{ //成员函数public: void disp_welcomemsg(); //显示欢迎信息 int g...原创 2019-09-27 19:18:41 · 5748 阅读 · 0 评论 -
求最长公共子串的长度代码
#include<iostream>#include<string>#include<vector>using namespace std;string str1, str2;typedef long long ll;const ll maxn = 1000;const ll MOD = 1000000007;const ll P = 100...原创 2018-08-23 16:26:37 · 318 阅读 · 0 评论 -
求连通块的个数代码 dfs/并查集
dfs代码://求连通块的个数#include<iostream>#include<cstdio>#include<vector>#define maxn 1000using namespace std;vector<int> G[maxn];bool vis[maxn] = {false};int m, n;void ...原创 2018-08-17 19:01:10 · 905 阅读 · 0 评论 -
AOE网上的关键路径长度求解代码(输出相关数组以及关键路径)
题目图如下所示: 代码:#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<stack>#define maxn 1000using namespace std;struct node{ int...原创 2018-08-22 15:59:59 · 2017 阅读 · 0 评论 -
dijkstra算法求单源最短路径长度并输出最短路径 代码
代码/*6 8 00 1 10 3 40 4 41 3 22 5 13 2 23 4 34 5 3*/#include<iostream>#include<algorithm>using namespace std;const int maxv = 1000;const int INF = 1000000000;int n, m,...原创 2018-08-18 14:39:52 · 2983 阅读 · 0 评论 -
用优先级队列来实现树的带权路径最小值的求解
反复选择两个最小的元素合并, 直到只剩下一个元素代码:#include<iostream>#include<queue>using namespace std;priority_queue<int, vector<int>, greater<int>> q;int main(){ int n, temp;...原创 2018-08-13 15:49:56 · 357 阅读 · 0 评论 -
哈夫曼编码与解码代码
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>using namespace std;typedef struct node{ char ch; //存储该节点表示的字符,只有叶子节点用的到 i...原创 2018-08-12 20:58:14 · 1045 阅读 · 0 评论 -
出租车费
#include #include #include int main(){ double i , w; scanf("%lf",&i); i = ceil(i); if(i <= 2){ w=7; }else if(i>2 && i<=15){ w = 7 + (i - 2) * 1.5; }else if(i>15){ w =原创 2017-09-20 17:35:46 · 350 阅读 · 0 评论 -
奖金发放
#include #include int main(){ double i , w; scanf("%lf",&i); if(i<=10){ w=i * 0.1 ; }else if(i>10 && i<=20){ w=10*0.1 + (i-10)*0.075 ; }else if(i>20 && i<=40){ w=10*0.1 + 1原创 2017-09-20 17:33:42 · 1084 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-09-23 17:46:13 · 143 阅读 · 0 评论 -
拆分数字
拆分数字原创 2016-10-02 00:13:29 · 1360 阅读 · 0 评论 -
求阶乘和
求阶乘和原创 2016-10-02 00:04:22 · 6977 阅读 · 0 评论 -
求最大公约数
求最大公约数原创 2016-10-01 23:42:15 · 316 阅读 · 1 评论 -
求算式结果
求算式结果原创 2016-10-01 23:20:10 · 964 阅读 · 0 评论 -
三角形问题
三角形问题原创 2016-10-01 23:13:40 · 443 阅读 · 0 评论 -
判成绩等级
判成绩等级原创 2016-10-01 23:03:22 · 525 阅读 · 0 评论 -
求最小数
求最小数原创 2016-10-01 22:57:06 · 614 阅读 · 0 评论 -
字符的ASCII码
字符的ASCII码原创 2016-10-01 22:51:29 · 847 阅读 · 0 评论 -
判断大小写字母
判断大小写字母(Judge the uppercase or lowercaset)原创 2016-10-01 22:45:44 · 3457 阅读 · 0 评论 -
a+b (c语言)
a+b描述每次输入2个整数a,b,程序输出a+b的结果。提示:注意:每次程序运行结果输出时,必须要在最后又一个回车符,即"\n",才能保证程序正确。主函数的返回值类型必须是int型。本题内的所有数据均可以使用int型实现。原创 2016-10-01 22:23:54 · 2428 阅读 · 0 评论 -
多项式的猜想
#include <stdio.h>#include <stdlib.h>int getA ( int n ){ //得到每一项 if ( n == 1 || n == 2 ) { return 1; } else { return 2 * getA ( n - 1 ) + getA原创 2017-09-23 17:51:23 · 1292 阅读 · 1 评论