![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 54
lithuim_
被命运反复羞辱,却毫无还手之力。
展开
-
2024/5/28 P1247 取火柴游戏
输入k及k个整数n1n2⋯nk,表示有k堆火柴棒,第i堆火柴棒的根数为ni;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取。谁取走最后一根火柴为胜利者。k2n1n2222→1212→1111→1010→00如果决定A22→2020→00又如k3n11n22n33。原创 2024-05-28 20:45:14 · 1704 阅读 · 0 评论 -
2024/5/16 P1416 攻击火星
一群外星人将要攻击火星。火星的地图是一个n个点的无向图。这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n−1的点。所有的点度统计是动态统计的。(一个点删掉后,与之相连的点的点度都会−1外星人攻击度为某个数的点时是同时攻击的。你需要设计这个图的边的方案来使得未被攻击的点最多。注意:你设计的图。原创 2024-05-16 21:59:31 · 890 阅读 · 0 评论 -
2024/5/1 P1025 [NOIP2001 提高组] 数的划分
将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。n7k3,下面三种分法被认为是相同的。115;151;511问有多少种不同的分法。原创 2024-05-01 00:15:54 · 521 阅读 · 2 评论 -
2024/3/10 P1601高精加法
起因是本人在一个为数不多空闲的下午刷题ing,看到了A+B problem。”从而忽略了高精这俩字,然后喜提40分。其中忘了这一步,导致喜提wa。如果没有这步,0+0输出为空。于是开始研究何为高精。原创 2024-03-10 15:37:42 · 341 阅读 · 0 评论 -
2024/1/30 dfs与bfs
想要了解dfs与bfs,就得了解队列和栈。原创 2024-02-04 01:34:27 · 4666 阅读 · 1 评论 -
2023/12/17 n层正方形
为了方便起见,不妨拿n=3举例,此时第一组数为1,2,3,2,1;此时第二组数的总数为2* n-2,此时最中间的数为n-1(此时最中间的数有两个,但无妨),此时每个 i 对应的数组元素是arr[i-1][i-1+]〕(即arr[i-1][ i ]),同样用m代替。,第n-3行第n-1列) 最中间的数字也是n-1,进一步证明了上面那个公式不合适。这时第一组数中那个公式就可以用了,即第 j 组数的个数为2* n-j,最中间的数为(2* n-j+1)/2 (不妨记为n1),当 i<=n1时,m=i;原创 2023-12-17 23:36:50 · 1644 阅读 · 0 评论 -
2023/12/17 初始化
【代码】2023/12/17 初始化。原创 2023-12-17 11:14:54 · 289 阅读 · 0 评论 -
2023/12/12 志愿者信息管理系统
首先这个程序包含的文件一共有如下5个:input.txt,menu.txt,find.txt,insert.txt,out.txtx。其中input.cpp又可以分成三个部分(函数重载),input就是读取文件输入数据所用。然后是output.cpp,它对应数据输出到 文件中。//将链表内容写入文件find.cpp://查找number为no的人员,并返回该结点前一结点便于删除函数调用del.cpp ://从链表中删除number为no的人员,返回链首//插入一名人员至链尾,返回链首。原创 2023-12-15 21:58:14 · 857 阅读 · 0 评论 -
2023/12/14 折半查找法 BinarySearch
【样例说明】将数列0、10、20、30、50输入到数组中,它们作为数组元素下标分别为0、1、2、3、4,在数组中用折半查找法查找30这个数,首先和数组中的中间元素20比较,30比20大,往右查找,跟此时的中间元素30比较,正好相等就找到了,它在数组中的元素下标是3,经过2次和中间元素比较找到的。【问题描述】编写程序,利用折半查找法从一个升序排列的数列中查找某数是否存在,如果存在则输出该数的下标,否则输出no,输出查找过程中和中间元素比较的次数。原创 2023-12-14 13:58:31 · 64 阅读 · 0 评论 -
2023/12/10 链表
【代码】2023/12/7 链表。原创 2023-12-07 13:22:28 · 408 阅读 · 1 评论 -
2023/12/5 I/O流
流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的,因为文本模式的文件中某些特殊字符可能被修改。这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。原创 2023-12-05 15:39:17 · 93 阅读 · 0 评论 -
2023/12/5 作用域
函数模板:http://t.csdnimg.cn/TthvE原创 2023-12-05 14:47:10 · 30 阅读 · 0 评论 -
2023/12/5 函数
调用函数实参用地址值,被调用函数形参用指针,调用时让指针指向实参变量。调用函数实参使用变量名或对象名,被调用函数的形参使用引用,实际传送的是地址值。1.实参形参都用数组:调用函数实参用数组名,被调用函数形参用数组。2.形参用指针,实参用地址值/数组名。3.形参用引用,实参数组名。原创 2023-12-05 14:31:18 · 41 阅读 · 0 评论 -
2023/12/3 文件操作
提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。从标准输入中读入一个密钥对文件1.txt加密,并将文件密文输出到2.txt文件中。从标准输入流中读入一个密钥串,使用其对当前目录下的文件1.txt进行加密。2)明文中字符c的密文为c^key[i];将文件密文输出到文件2.txt。输出密文到2.txt文件中。2.txt文件内容为。原创 2023-12-03 14:29:25 · 126 阅读 · 0 评论 -
2023/11/29 结构体
输入”xiaoe“,得到90.原创 2023-11-29 21:30:57 · 35 阅读 · 0 评论 -
2023/11/29 引用
主要用作函数参数和返回值。感觉引用在一定程度上有点像指针。但是它没有空引用,而且改变它是对变量本身进行改变,而指针会使指针变量指向下一个实体的地址,而并非改变所指实体。对引用的操作其实是对其引用变量的操作,它不是变量,不占据储存空间,与被引用的变量有共同储存地址。创建格式:类型 & 引用名 = 变量名。原创 2023-11-29 20:16:04 · 38 阅读 · 0 评论 -
2023/11/27 整数去重
这个题同样使用桶排序的思想。我们在输入数组的时候把arr[x]递增,然后只有在arr[x]==1时才对x进行输出。然而当我只是把100改成了20000,就正确了。原创 2023-11-27 14:10:34 · 40 阅读 · 0 评论 -
2023/11/25 直方图(桶排序)
它通过设置一些具有大小顺序的桶,每个桶对应一个数据范围,将数据平均分配到各个桶中;最终按照桶的顺序将所有数据合并。,它可以存储 0−100000−10000 的数,然后我们从 0−100000−10000 输出,如果桶非空,就输出现在循环到的下标,这样输出一定是有序的,因为下标是绝对按照顺序来排列的。如果这个题用普通的做法挺难想的:又要找到最大值,又要给每个值计出现次数。我们不直接存储数,而是把数当成下标,放进一个桶(一般是一个很大的数组)中。需要注意的是,注意桶的数据范围不是n而是输入的数最大为多少。原创 2023-11-25 19:56:53 · 66 阅读 · 0 评论 -
2023/11/25 查找特定的值(哨兵查找法)
更优的算法:哨兵查找法。核心思想,把arr[n]=x,这样一定能在数组中查找到所需数字。然后如果查找到的下标不是n那就输出这个数,如果是,就输出-1。第二行包含 n 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过 10000。第一行包含一个正整数 n,表示序列中元素个数。第三行包含一个整数 x,为需要查找的特定值。x 的绝对值不超过 10000。在一个序列(下标从 0 开始)中查找一个给定的值,输出第一次出现的位置。若序列中存在 x,输出 x 第一次出现的下标;原创 2023-11-25 17:55:20 · 54 阅读 · 1 评论 -
2023/11/25 幂的末尾(快速幂,对齐输出)
这个过程中,当我们的指数是偶数时,我们就把底数平方,指数/2.当指数是奇数时,我们就分一个原底数出来,再接着继续指数为偶数时的操作。s和a之间有7个空格,cout原创 2023-11-25 09:56:19 · 296 阅读 · 0 评论 -
2023/11/24 求小数的某一位
这个题目咋一看思路很简单:double n=a/b;然后再计算n的几位小数不就行了吗。但是,结果显示错误。我们注意看题目给出的n的大小范围:1<=n<=10000。它本质上是a对b进行取余,取余得到的数字*10再次进行取余。这样我们的思路就很明显了,一直重复这样,最后再a/b,就可以得到目标数字了。分数 a/b 化为小数后,小数点后第 n 位的数字是多少?原创 2023-11-24 13:47:29 · 48 阅读 · 0 评论 -
2023/11/23 浮点数取整
round :四舍五入。假设舍入前的数是 x ,那么舍入后的符号与之相同;然后考虑 ∣x∣ ,如果它小数点后一位在 0∼4 之间,会被直接舍去,而在 5∼9 之间则会进位。:输入一个双精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。floor:向下取整。ceil :向上取整。原创 2023-11-23 12:18:21 · 221 阅读 · 0 评论 -
2023/11/23 地球人口承载力估计
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供 x 亿人生活 a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?原创 2023-11-23 11:39:42 · 43 阅读 · 0 评论 -
2023/11/23 对齐输出
s和a之间有7个空格,cout原创 2023-11-23 10:49:57 · 40 阅读 · 0 评论 -
2023/11/22 找完数
但是如果细细分析就会发现,24=1+2+3+4+6+8+12+24=60,但是电脑在判断到8的时候sum已经等于24,这个时候它就会直接输出,造成结果错误。这里使用sum+=j,一定会造成24的结果。既然j是i的因子,那么i/j也一定是。【问题描述】一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,并且6=1+2+3,因此6是“完数”。【样例说明】28的因子为1、2、4、7、14,并且28=1+2+4+7+14,因此28是“完数”,同理可判断496也是“完数”。原创 2023-11-22 22:06:44 · 43 阅读 · 1 评论 -
2023/11/21 连续正整数(位运算)
【问题描述】一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:15=4+5+615=7+8请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。【输入形式】从控制台输入一个正整数(小于等于10000)。【输出形式】在标准输出上输出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。原创 2023-11-21 14:12:58 · 112 阅读 · 1 评论 -
浮点数除法不会改变除数与被除数数据类型
2*1.0/3中的*1.0是为了把操作数变成浮点数,浮点数除法不会改变除数与被除数数据类型。原创 2023-11-15 19:21:56 · 49 阅读 · 0 评论 -
2023/11/15 正整数的位数
给出一个不多于5位的整数,要求1、求出它是几位数,2、分别输出每一位数字,3、按逆序输出各位数字,例如原数为321,应输出123。但是我们如果按此步骤继续,再重复之前a=n/pow(10,count),这样的操作的话,会显得非常繁琐。1.需要用三个n1,n2,n3,因为在代码中,n已经变化了(突然想,如果每个部分都用函数代替,应该就不用这样了)分析问题,如果按从前求n位数(n已知)的题目算的话,首先我们必须知道,输入的数字有多少位。【样例说明】1423有4位数字,分别是1、4、2、3,其中最大值是4。原创 2023-11-15 15:35:46 · 58 阅读 · 0 评论 -
2023/11/13 使用new创建动态数组及其相关事项(一维数组)
【样例说明】数列1、3、5、2、0中的素数是3、5、2,它们的和是10,对它们从大到小排序,结果是5 3 2。总觉得在现在的学习过程中使用new定义动态数组确实挺麻烦的,但是这个还是很有用。需要注意delete释放内存。【问题描述】编写程序,从任意n个数中找出素数,计算素数之和,并按从大到小顺序排序。【输出形式】输出分2行:第一行为素数之和,第二行为素数排序结果。【输入形式】输入分2行:第一行为n的值,第二行为n个整数;输入10出来的是2 3 5,但是按理来说应该是5 3 2;本来一开始我的代码是这样的。原创 2023-11-13 15:14:41 · 139 阅读 · 1 评论 -
2023/11/13 指针01 指针数组
*(*(b+1)+2):这表示对指向b[1][0]的指针进行一次解引用操作,然后再加上2,最后进行一次解引用操作,即获取b[1][2]的值。在给定的代码中,**b、**(b+1)和*(*(b+1)+2)是指针操作符的组合,用于访问二维数组b中的特定元素。- **(b+1):这表示对指向b[1][0]的指针进行两次解引用操作,即获取b[1][0]的值。- **b:这表示对指向b[0][0]的指针进行两次解引用操作,即获取b[0][0]的值。三维数组:*(*(*(c+i)+j)+k)指针变量可以进行运算。原创 2023-11-13 16:31:50 · 38 阅读 · 0 评论 -
2023/11/13 指针数组和指向数组的指针
/这行使pa指向a[1],所以pa[-1][0]为a[0][0],pa[0][0]为a[1][0],*(*pa+2)为a[1][2]e.g. int (*p)[5] //类型 (*指针名)[大小](2)指向数组的指针:可指向一维数组,是一个二级指针。(1)指针数组:数组元素类型为指针的数组。原创 2023-11-13 16:46:36 · 32 阅读 · 0 评论 -
2023/11/13 字符指针
在给s1和s2赋值后,通过将'\0'赋值给s1[i]和s2[i],可以确保字符串以正确的方式结束。*(s[2] + 1)中s[2]就是int,s[2]+1就是int中的[1]也就是n的地址,*(s[2] + 1)就是n。在给字符数组赋值时,通常会在字符串的末尾添加'\0',以便在后续的字符串处理中能够正确地识别字符串的结束位置。*(*s+2)中*s就是double,*s+2是double中的u的地址,那么相应的*(*s+2)就是u。s1中p先+1,s[i]=p+1;结果:ufbdifs。原创 2023-11-13 17:24:19 · 27 阅读 · 0 评论 -
2023/11/13 字符串处理函数
因为abcd中的d小于abce中的e,所以s1大于s2。原创 2023-11-13 20:24:32 · 45 阅读 · 0 评论 -
2023/11/13 不同数据类型进行运算
一开始我也想着char类型直接找字符所以选的A,但是后面发现错了,同学问的问题也把我问住了。第一个是存储1,第二个是存储1的ASCII码值49.char a在减法过程中自动变成了int。char转int,后面加‘0’char转int,后面减‘0’结果是a=1,b=49;原创 2023-11-13 20:52:45 · 40 阅读 · 1 评论 -
2023/11/14 最大公约数与最小公倍数
定义函数的返回值可以使用关键字return在函数中,可以为算术表达式、变量、常量或者函数执行的返回值。注意:函数的返回值的类型必须与函数声明的返回值类型相同。int fun1(void) //函数声明return 12;//返回值 12,类型为 int//将函数 fun1() 的返回值 12 赋值给变量 a//输出变量 a 的值,为 12return 0;原创 2023-11-14 12:11:30 · 67 阅读 · 0 评论