自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 树和二叉树

树(tree)是n(n≥0)个节点的有限集合,当n=0时,为空树;当n>0时,为非空树。人以一棵非空树,满足以下两个条件1)有且仅有一个称为根的节点;2)除根节点以外,其余节点可以分为m(m>0)个互不相交的有限集,期中每一个集合本身又是一棵树,并且称为根的子树(subtree)。●节点——节点包含数据元素及若干指向子树的分支信息。●节点的度——节点拥有的子树个数。●树的度——树中节点的最大度数。●终端节点——度为0的节点,又称为叶子。...

2022-07-16 12:00:35 435 1

原创 NOI3.2数据结构之指针和链表

目录1748约瑟夫问题6378删除数组中的元素(链表)6379统计学生信息(使用动态链表完成)1748约瑟夫问题描述约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。输入每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:.

2022-03-11 13:00:10 472

原创 顺序队列和链队列(Queue模板)

目录模板:CSDN一、队列1.定义:2.储存方式:3.基本操作:二、判断顺序队列队满的三种方法三、基本操作:1.声明2.初始化数据 3.入队4.出队5.判断队满和队空6.获得栈顶元素7.清空队列8.显示队列数据四、模板(自制)1.顺序队列2.链队列模板:相关讲解CSDN一、队列1.定义:只允许在一端...

2022-03-09 22:35:37 1348

原创 c++模板(函数模板和类模板)part_1

一、函数模板1.作用:建立一个通用函数,其函数的返回值类型可以不具体定制,用一个虚拟类型代替2.语法:template<typename T>//函数声明或者定义//template---声明创建函数模板//typename---表明其后的符号是一种数据类型,可以用class代替//T--- 通用数据类型 虚拟类型 可以换名称(H\J\...)3.示例:实现两个数据交换通常:#include<iostream>us...

2022-03-07 23:29:33 576

原创 顺序栈和链栈(简单例题_1C++)

【题目要求】输入若干串字符,每次遇到换行符’\n’时,则输出本行当前处理结果。输入时以“#”字符作为结束符,当遇到这个符号后,意味着字符串输入结束。(在输入过程中如果输入“<”,则表示回退一格;在输入过程中如果包含了“@”,则表示回退到本行行首。)...

2022-03-01 23:41:56 1151 1

原创 NOI.8.04错误勘探(暴力解法,简单)

描述给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1或者1变成0。输入输入n + 1行,第1行为矩阵的大小n(0 < n < 100),以下n行为矩阵的每一行的元素,元素之间以一个空格分开。输出如果矩阵符合条件,则输出OK;如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开

2021-12-21 10:55:47 157

原创 NOI1.12.08:Vigenère密码(较为简单的方法)

描述16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。 在Vigenère密码中,密钥k是一个字母串,k=k1k2…kn。当明文M=m1m2…mn时,得到的密文C=c1c2…cn,其中c

2021-12-18 21:29:32 496

原创 NOI1.9.15接水问题

描述学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1。现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 1 到 n 编号,i号同学的接水量为 wi。接水开始时,1 到 m 号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 j 完成其接水量要求 wj后,下一名排队等候接水的同学 k 马上接替 j 同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即 j 同学第 x 秒结束时完成接水,则 k 同学

2021-12-05 11:00:26 223

原创 NOI1.9.13整数去重

描述给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。输入输入包含两行:第一行包含一个正整数n(1 <= n <= 20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于100。输出输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。样例输入510 12 93 12 75样例输出

2021-12-04 22:55:12 247

原创 NOI.8.05:计算鞍点

描述给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。11 3 5 6 912 4 7 8 1010 5 6 9 118 6 4 7 215 10 11 20 25输入输入包含一个5行5列的矩阵输出如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"样例输入11 3 5 6

2021-11-25 17:55:39 433

原创 NOI1.7.19:字符串移位包含问题(两种思路)

描述对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。输入一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。输出如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输

2021-11-23 00:15:17 2561 1

原创 设计一个字符串子串删除函数

样例一请输入主串:abcdefj请输入字串:cd删除子串后的结果:abdefj样例二请输入主串:abcdefjcdhk请输入字串:cd删除子串后的结果:abdefjhk#include<stdio.h>#include<string.h>void delete_substring(char *s1,char *s2){ char *index=NULL;//定义一个字符型指针 char temp[20]={0};//定义一个临时数组,储存字

2021-11-22 17:56:37 1218

原创 NOI1.7.21:单词替换

描述输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100).s, a, b 最前面和最后面都没有空格.输出输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入You

2021-11-20 07:20:10 681

原创 NOI1.7.20:删除单词后缀

描述给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。输入输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。输出输出按照题目要求处理后的单词。样例输入referer样例输出refer#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){

2021-11-19 23:26:38 387

原创 NOI.7.18:验证子串

描述输入两个字符串,验证其中一个串是否为另一个串的子串。输入输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。输出若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)否则,输出 No substring。样例输入abcdddncabca样例输出abc is substring of dddncabca

2021-11-18 23:15:30 835

原创 NOI1.7.16:忽略大小写的字符串比较和17:字符串判等

目录#16:忽略大小写的字符串比较#17:字符串判等16:忽略大小写的字符串比较描述一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准(注意:如果某个字符串遇到'\0'而另一个字符串还未遇到'\0',则前者小于后者)。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"

2021-11-17 23:10:35 707

原创 NOI.7编程基础之字符串(11-15题)

目录#11:潜伏者#12:加密的病历单#13:将字符串中的小写字母转换成大写字母#14:大小写字母互换#15:整理药名#11:潜伏者描述R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则:1、S国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字母)。2、S国对于每个字母规定了对应的“密字...

2021-11-16 23:50:06 797

原创 NOI.7编程基础之字符串(1-10题)

目录#01:统计数字字符个数#02:找第一个只出现一次的字符#03:基因相关性#04:石头剪子布#05:输出亲朋字符串#06:合法 C 标识符#07:配对碱基链#08:字符替换#09:密码翻译#10:简单密码#01:统计数字字符个数描述输入一行字符,统计出其中数字字符的个数。输入一行字符串,总长度不超过255。输出输出为1行,输出字符串里面数字字符的个数。样例输入Peking University is se...

2021-11-16 23:15:10 2451

原创 NOI.5.21角谷猜想

描述所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。输入一个正整数N(N <= 2,000,000)输出从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。样例输入5样例输出5*3+1=1616

2021-11-15 19:30:09 227

原创 NOI.5.44第n小的质数

描述输入一个正整数n,求第n小的质数。输入一个不超过10000的正整数n。输出第n小的质数。样例输入10样例输出29#include<stdio.h>#include<math.h>int main(){ int n,j,m; long i; int flag,count=0; scanf("%d",&n); for(i=2;;i++)//不能从一开始,1不是质数 .

2021-11-15 19:23:52 1649

原创 NOI1.5.24正常血压

描述监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。输入第一行为一个正整数n,n < 100其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压,中间以一个空格分隔。输出输出仅一行,血压连续正常的最长小时数。样例输入4100 8090 50120 60140 90样例输出2#include&.

2021-11-15 12:51:34 243

原创 NOI.5.22津津的储蓄计划

描述津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就

2021-11-15 12:41:20 455

原创 NOI.5.16买房子

描述某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子?(第一年年薪N万,房价200万)输入一行,包含两个正整数N(10 <= N <= 50), K(1 <= K <= 20),中间用单个空格隔开。输出如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出I

2021-11-15 00:32:07 173

原创 NOI.5.37雇佣兵

描述雇佣兵的体力最大值为M,初始体力值为0、战斗力为N、拥有X个能量元素。当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结束体力值将为0。在同一个战斗期内,雇佣兵每连续战斗n天,战斗力就会上升1点,n为当前战斗期开始时的战斗力。一个战斗期结束后,雇佣兵需要用若干个能量元素使其体力恢复到最大值M,从而参加下一个战斗期。每个能量元素恢复的体力值不超过当前的战斗力。每个能量元素只能使用一次。请问:雇佣兵的战斗力最大可以到达多少。输入一行包括三个整数M、N、X,相邻两个整

2021-11-15 00:20:54 209

原创 NOI1.6.15阶乘和

描述用高精度计算出S=1!+2!+3!+…+n!(n≤50)其中“!”表示阶乘,例如:5!=5*4*3*2*1。输入正整数N,输出计算结果S。输入一个正整数N。输出计算结果S。样例输入5样例输出153思路:我做这道题的时候结合了“大整数加法”和“求1000以内的阶乘”的方法。求阶乘部分:temp=1;//用来表示需要进行乘的位数个数int a[10000]= {0};//定义一个临时数组,用来表示每一次阶乘的结果a[0]=1;//初.

2021-11-15 00:07:55 1179

原创 NOI1.6.14求10000以内n的阶乘

描述求10000以内n的阶乘。输入只有一行输入,整数n(0<=n<=10000)。输出一行,即n!的值。样例输入100样例输出93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000#

2021-11-14 21:09:00 227

原创 NOI1.6.13大整数的因子

描述已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。输入一个非负整数c,c的位数<=30。输出若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。样例输入30样例输出2 3 5 6 #include <stdio.h>#include <stdlib.h>#include <.

2021-11-14 18:43:37 1066

原创 NOI1.6.12计算2的n次方

描述任意给定一个正整数N(N<=100),计算2的n次方的值。输入输入一个正整数N。输出输出2的N次方的值。样例输入5样例输出32解题思路:因为2的100次方数目较大,所以不能用普通的方法(pow(2,n))解决,所以要考虑别样的方式。采用数组存储整数,用整数数组一个下标对应存储一位数字。第一步,取一个数组,并且将数据的每个元素初始化为-1(这里不能使用初始化为零) int ans[2500]={0}; memset(ans,..

2021-11-13 23:04:53 807

原创 NOI.6.09向量点积计算

描述在线性代数、计算几何中,向量点积是一种十分重要的运算。给定两个n维向量a=(a1,a2,...,an)和b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn。输入第一行是一个整数n。1 <= n <= 1000。第二行包含n个整数a1,a2,...,an。第三行包含n个整数b1,b2,...,bn。相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。输出一个整数,即两个向量的点积结果。样例输入31 4 6

2021-11-04 23:38:31 219

原创 NOI.6.08石头剪刀布

描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0 < N,NA,NB < 100。第二行包含NA个

2021-11-03 22:16:24 1742

原创 NOI.6.07有趣的跳跃

首先了解一下冒泡排序冒泡排序算法,C语言冒泡排序算法详解描述一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一个程序判定给定序列是否存在“有趣的跳跃”。输入一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素...

2021-10-31 14:54:44 2642

原创 NOI.1.6.06校门外的树

描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入第一行有两个整数L(1 &lt

2021-10-31 14:34:15 713 1

原创 NOI1.6.05年龄与疾病

描述某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。输入共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。输出按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。样例输入101

2021-10-31 14:08:20 358

原创 NOI1.6.04数组逆序重放

描述将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。输入输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。输出输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。样例输入58 6 5 4 1样例输出1 4 5 6 8#include<stdio.h>int main(){ int N[100],M[100];

2021-10-31 14:02:36 407

原创 NOI1.6.03计算书费

下面是一个图书的单价表:计算概论 28.9 元/本数据结构与算法 32.7 元/本数字逻辑 45.6元/本C++程序设计教程 78 元/本人工智能 35 元/本计算机体系结构 86.2 元/本编译原理 27.8元/本操作系统 43 元/本计算机网络 56 元/本JAVA程序设计 65 元/本给定每种图书购买的数量,编程计算应付的总费用。输入输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》

2021-10-31 13:57:37 681

原创 NOI.6.02陶陶摘苹果

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个1

2021-10-31 13:52:08 368

原创 NOI.6.01与指定数字相同的的数的个数

描述输出一个整数序列中与指定数字相同的数的个数。输入输入包含三行:第一行为N,表示整数序列的长度(N <= 100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的整数m。输出输出为N个数中与m相同的数的个数。样例输入32 3 22样例输出2#include<stdio.h>int main(){ int N[100],count=0; int i,n,m,t; scanf("%d"

2021-10-31 13:44:15 316

原创 顺序表的插入与删除

顺序表插入基本思想: ①判断空间是否足够 ②判断插入位置是否合理③从最后一个元素开始依次往后移动每个数据元素,挪出空间④插入新元素⑤表长因为增加了一个新元素而加一例题:【问题描述】给出一个无序数组,长度为10,10,12,14,16,18,20,13,200,134,59。给定一个位置position和一个数字value,将value插入到position指定的位置上。输出插入后的数组。【输入形式】两个数字,一个是插入数字的位置,一个是插入的数字【输出形式】插...

2021-10-25 20:49:25 818

原创 18.鸡尾酒疗法C语言

#include<stdio.h>int ans[10001];int main(){ int n,i,y1,y2; int a,b; float x,y; scanf ("%d%d%d",&n,&a,&b); x=1.0*b/a; for (i=1; i<n; i++) { scanf("%d%d",&y1,&y2);//这里也可以直接使用a,b ...

2021-10-19 22:55:26 2742 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除