C语言
老张啊
不断学习,不断前进
展开
-
完全二叉树求节点数
题目描述如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。输入输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。最后一组测试数据中包括两个0,表示输原创 2021-03-11 14:21:47 · 189 阅读 · 0 评论 -
广度优先搜索(BFS)
引入如果说深度优先搜索是“不撞南墙不回头”,那么广度优先搜索就是“剥洋葱”。因为洋葱是一层一层的。算法模板这个从树的角度来看,就是层次遍历(一层一层的,从上到下,从左到右)创建一个队列先将根节点入队while(队列非空){获取头结点;访问头结点;头结点出队;基于当前的结点,遍历所有与之相邻,且未入队的所有结点,将其入队}这个需要注意是将所有“未入队”的结点入队,而非“未访问”。未入队,就是从来没进过队列未访问,则包含了已经进队,当时还没排到访问(会重复入队)例子给出一个原创 2021-03-10 10:59:05 · 97 阅读 · 0 评论 -
深度优先遍历(DFS)
是什么?深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法。使用递归可以很好的实现深度优先遍历,因此,只能说递归是实现深度优先遍历的一种实现方式。解决问题给定一个序列,枚举这个序列所有的子序列例如{1,2,3}子序列包含{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}选择最优子序列,使它的某个特征是所有子序列中最优的。这个问题也就是从n个整数中,选择k个数的所有方案。应用一N件物品,重量w[i],价值c[i],选出若干,使总重量不超过V,找出价值最大的值原创 2021-03-09 10:03:17 · 2423 阅读 · 1 评论 -
静态链表通用解题步骤
定义静态链表struct Node { int address;//节点地址 typedata data;//结点数据 int next;//下一个结点 XXX //结点的某一个性质 } nodes[maxn];XXX可以根据题目的要求来使用,比如定义该结点是否加入了链表。链表初始化 for(int i = 0; i<maxn; i++) { nodes[i].XXX }将其定义为一般情况下达不到的数字。防止影响以后的使用静态链表的遍历 int p ; f原创 2021-03-08 16:52:16 · 228 阅读 · 0 评论 -
STL之pair
//想要把两个元素绑在一起作为一个合成元素,而不需要新建结构体#include<bits/stdc++.h>#include<iostream>#include<map>using namespace std;//pair 相当于有两个元素的结构体//分别通过first和second访问int main() { //实例化方法 pair<string,int> p; p.first = "hah"; p.second = 123; co原创 2021-03-07 13:18:12 · 115 阅读 · 0 评论 -
1071 Speech Patterns (25 分)
People often have a preference among synonyms of the same word. For example, some may prefer “the police”, while others may prefer “the cops”. Analyzing such patterns can help to narrow down a speaker’s identity, which is useful when validating, for exampl原创 2021-03-07 12:53:00 · 106 阅读 · 0 评论 -
STL之queue 与 priority_queue
queue//STL之queue用法//实现先进先出 #include<stdio.h>#include<queue>using namespace std;int main() { //定义 queue<int> qu; //进队 qu.push(1); qu.push(2); qu.push(3); //元素访问方式 //front函数 printf("队列头 %d\n",qu.front()); //back函数 pr原创 2021-03-07 10:20:01 · 82 阅读 · 0 评论 -
STL之map
//STL之MAP用法//以往定义的数组实现了int类型向其他类型的映射//现在想要实现其他类型向其他类型的映射//通过map实现键值对存储#include<stdio.h>#include<map>using namespace std;int main() { //定义 map<char,int> mp; mp['s'] = 45; mp['z'] = 25; mp['a'] = 12; //元素访问方式 //方式一 通过键直接得到 p原创 2021-03-07 08:42:25 · 86 阅读 · 0 评论 -
1060 Are They Equal (25 分)
题目If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0.123×105 with simple chopping. Now given the number of significant digits on a machine and two float numbers, y原创 2021-03-06 19:21:11 · 74 阅读 · 0 评论 -
问题 A: Course List for Student (25)
题目描述Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query.输入Each input file contains one test c原创 2021-03-06 15:21:50 · 160 阅读 · 0 评论 -
问题 F: 迷瘴 配溶液
题目描述小明正在玩游戏,他控制的角色正面临着幽谷的考验——幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅。由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死。幸好小明早有防备,提前备好了解药材料(各种浓度的万能药水)。现在只需按照配置成不同比例的浓度。现已知小明随身携带有n种浓度的万能药水,体积V都相同,浓度则分别为Pi%。并且知道,针对当时幽谷的瘴气情况,只需选择部分或者全部的万能药水,然后配置出浓度不大于 W%的药水即可解毒。现在的问题是:如何配置此药,能得到最大体原创 2021-03-06 11:04:31 · 200 阅读 · 0 评论 -
出租车费
题目描述某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。现在给你整个行程的公里数,请你计算坐出租车的最小花费。输入输入包含多组测试数据。每组输入一个正整数n(n<1000000原创 2021-03-06 09:50:28 · 211 阅读 · 0 评论 -
神奇的口袋
题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的原创 2021-03-05 15:48:01 · 87 阅读 · 0 评论 -
问题 E: Problem B
题目描述请写一个程序,对于一个m行m列的(1<m<10)的方阵,求其每一行,每一列及主对角线元素之和,最后按照从大到小的顺序依次输出。输入共一组数据,输入的第一行为一个正整数,表示m,接下来的m行,每行m个整数表示方阵元素。输出从大到小排列的一行整数,每个整数后跟一个空格,最后换行。样例输入415 8 -2 631 24 18 71-3 -9 27 1317 21 38 69样例输出159 145 144 135 81 60 44 32 28 27这里题目写只有一组数原创 2021-03-05 09:45:42 · 79 阅读 · 1 评论 -
字符串的查找删除
题目描述给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。输入输入只有1组数据。输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。输出删除输入的短字符串(不区分大小写)并去掉空格,输出。样例输入in#includeint main(){printf(" Hi ");}输出#cludetma(){prtf(“Hi”);}提示注:将字符串中的In、IN、iN、in删除。思路首先,需要输入待删除字符串字样,因为需要删除原创 2021-03-04 09:05:11 · 721 阅读 · 1 评论 -
“大”数据的进制转换
题目描述将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出每行输出对应的二进制数。样例输入9852111126样例输出11110110011101001110001100110思路展示由于当前的数比较大,无法使用int 和long long存储,所以使用字符数组存储,核心代码如下:for(int j = 0;j<len;j++){原创 2021-03-03 14:44:53 · 492 阅读 · 1 评论 -
解决OJ 反馈“输出超限”
问题正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。原答案#include<stdio.h>int main() { long long a,b; int da,db; char stra[50]; char strb[50]; int i = 0,j = 0; int pa = 0,pb = 0;原创 2021-03-01 20:37:53 · 6348 阅读 · 0 评论 -
结构体中包含unoin
设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:struct {int num;char name[10];char sex;char job;union {int class;char position[10];}category;};在以上的结构体中,如果job项为s(学生原创 2021-02-23 12:18:07 · 147 阅读 · 0 评论 -
C ++ 中的字符数组
字符数组的初始化字符数组可以采用和普通数组一样的初始化方式,当然也可以采用直接赋值字符串的形式初始化(这种方式仅限于初始化赋值)#include<stdio.h>#include<string.h>int main() { char str1[12] = {'i',' ','l','o','v','e',' ','y','o','u'}; char str2[12] = "i love you"; for(int i = 0; i<12; i++) { pri原创 2021-02-22 16:49:23 · 1348 阅读 · 0 评论 -
STL之set
特点有序且唯一#include<stdio.h>//1.头文件引入 #include<set>using namespace std;int main(){ //2.set的定义 // set<类型> 名称 set<int> test; //3.元素插入 for(int i = 0;i < 3;i++){ test.insert(10-i); } test.insert(5); test.insert(5); /原创 2021-02-01 20:34:41 · 62 阅读 · 0 评论 -
STL之vector
#include<stdio.h>//要引入vector头文件,引入 using namespace std;#include<vector>using namespace std;int main(){ //1.vector的定义:vector<type> name; vector<int> a; //和一维数组相同,type可以是任何基本类型,比如int double,也可以是STl标准容器,但是注意>> 之间添加空格>原创 2021-01-30 20:18:26 · 72 阅读 · 0 评论 -
C++sort函数使用(成绩排名)
需求:使用sort实现先按照成绩降序排名,如果名次相同则按照姓名按照字典序从小到大,实现排名。分析:第一种方式给出将名次作为结构体的一个属性,第二种方式则直接输出#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct Student{ char name[10]; int score; int mingci;}stus[5];bool cmp(S原创 2021-01-29 17:14:35 · 2586 阅读 · 0 评论 -
C语言函数如何正确返回数组?
一个错误的例子#include<stdio.h>int* function(){ int a[5]; a[0] = 1; a[1] = 2; a[2] = 3; return a;}int main(){ int* b; b = function();// printf("123\n"); printf("第一次%d%d%d%d\n",b[0],b[1],b[2],b[3]); printf("第二次%d%d%d%d\n",b[0],b[1],b[2],b[3]);原创 2021-01-28 19:35:47 · 61719 阅读 · 19 评论