c语言
Mmonster23
现在的付出,得配得上想要的生活
展开
-
田忌赛马
田忌赛马:田忌与齐威王赛马,采用最好马对阵最差马的技巧赢得了齐威王,齐威王不高兴,改了规则,要求田忌出战的马的等级必须和自己的一样,如,齐王上第一块马,则田忌也要上第一快马。现各有n匹马,输入两个数组,分别表示齐威王和田忌每匹马的速度值,要求田忌的马速度排名必须与齐威王的一致,输出田忌的马的出场顺序。#include<iostream>#include<map>#include<algorithm>#include<vector>using na原创 2020-10-24 22:41:45 · 349 阅读 · 0 评论 -
逆波兰表达式求值-力扣
题目:根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”]输出: 6原创 2020-06-20 17:37:24 · 250 阅读 · 0 评论 -
统计每个月兔子的总数
题目:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?/** * 统计出兔子总数。 * * @param monthCount 第几个月 * @return 兔子总数 */public static int getTotalCount(int monthCount){ return 0;}分析:把兔子按新生,一个月,两个月,成年分成四类,只需要每个月更新每种兔子的数量即可但是分四类无法通原创 2020-06-20 14:25:46 · 421 阅读 · 0 评论 -
超长正整数相加-牛客
请设计一个算法完成两个超长正整数的加法。接口说明/*请设计一个算法完成两个超长正整数的加法。输入参数:String addend:加数String augend:被加数返回值:加法结果*/public String AddLongInteger(String addend, String augend){/在这里实现功能/return null;}话不多说,直接上代码#include<iostream>#include<vector>#include原创 2020-06-19 18:20:20 · 246 阅读 · 0 评论 -
幸运的袋子-牛客
题目:一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。输入描述:第一行输入一个正整数n(n ≤ 1000)第二行为n个数原创 2020-06-19 01:24:32 · 325 阅读 · 0 评论 -
扑克牌大小-牛客
题目:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王)3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR基本规则:(1)输入每手牌可能是个子,对子,顺原创 2020-06-19 00:00:14 · 588 阅读 · 0 评论 -
整数二进制中1的个数
要统计一个整数二进制中1的个数,首先我们会想到最简单的方法就是 % 2 再 / 2,然后判断每一位是否为1。但是,如果这是一个很大的数,频繁的除法运算效率不是很高。而位运算比乘除法效率高,所以我们就来用位运算解决这道题。首先方法一,当num大于0时,判断num & 1 的值,即可知道最后一位的值,循环每次num右移一位,即可完成目标。然后方法二,num & 0x55555555 + ((num >> 1) & 0x55555555) 5的二进制为0101,按位与可原创 2020-06-17 21:15:36 · 407 阅读 · 0 评论 -
手套-牛客
题目描述:在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一种合法原创 2020-06-17 20:35:33 · 332 阅读 · 0 评论 -
蓝桥杯 猴子吃包子
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。数据规模和约定 0<x<100;0<y<100;0<z<100;0<x1<=1000000;0<y1<=10000000;0<z1<=10000000;0<p<=原创 2020-05-09 01:09:53 · 307 阅读 · 0 评论 -
蓝桥杯 未名湖边的烦恼(C)
问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)分析:已知每天收工一双鞋都不剩,那么所有的鞋都来源...原创 2020-04-17 21:59:58 · 332 阅读 · 0 评论 -
栈与队列的实现
栈的实现插入删除顺序表尾插 O(1)尾删 O(1)链表头插 O(1)头删 O(1)链表在建立时,就使用头插,在删除时才可以使用头删。由时间复杂度可以看出使用顺序表和链表实现栈时,性能差不多,但是顺序表结构更简单,所以有限使用顺序表。队列的实现插入删除顺序表尾插 O(1)头删 O(n)链表(带有尾指针)尾插 O(1)头删 ...原创 2020-03-26 23:27:47 · 115 阅读 · 0 评论 -
C语言实现通讯录程序
通讯录程序:语言:c设计实现功能:1、添加联系人(重名检测)2、删除联系人3、修改联系人信息4、查询联系人5、显示全部联系人6、对联系人进行排序7、保存通讯录数据,下次打开程序原始数据依旧存在8、清空联系人9、通讯录空间不足时,进行自动扩容根据需要实现的功能,设计以下结构体类型存放信息,设计一下功能函数。#ifndef _CONTACT_H_#define _CONTA...原创 2020-03-08 23:31:25 · 507 阅读 · 0 评论 -
蓝桥杯 高斯日记
高斯日记大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:17...原创 2020-03-06 23:17:46 · 204 阅读 · 0 评论 -
蓝桥杯 龟兔赛跑
问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值...原创 2020-01-12 20:21:55 · 313 阅读 · 0 评论 -
for循环的用途
for循环就是来遍历的1、数字遍历for(i = 0; i < b; i++)i完成了对数字[a,b)之间的遍历2、数组遍历for(i = 0; i < n; i++)a[i]完成了对数组的遍历3、数位遍历for(i = n; i ; i/=m)i%m完成在m进制下对n的每一位的遍历4、字符串遍历for(i = 0;str[i]; i++)str[i]完成了对字...原创 2019-12-31 21:36:27 · 2102 阅读 · 0 评论 -
有符号数与无符号数比较大小
今天练习时发现一个很神奇的题,如下:#include <stdio.h>int i;int main(){ i--; if (i > sizeof(i)) { printf(">\n"); } else { printf("<\n"); } system("pause"); return 0;}执行结果发现是大于。那么这是为什么...原创 2019-12-24 20:43:10 · 5315 阅读 · 0 评论 -
逗号表达式问题
在一下两种情况下分析运算顺序和输出情况可以显然看出结果不同,那么是为什么呢?首先我们要知道:1.赋值运算符比逗号运算符优先级高2. 逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值(如a = (c, d, k)则,a的值就是k的值)根据这样规则我们来分析一下上面的结果在第二个程序中int u = (k++,m++,++k)表达式来说,逗号运算的结合性是从左至右...原创 2019-12-23 09:38:41 · 392 阅读 · 0 评论 -
蓝桥杯 微生物增殖
微生物增殖假设有两种微生物 X 和 Y。X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X(分裂出的两个都是新生),半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。如果X=10,Y=90呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。提前告诉大家答案吧,当...原创 2019-11-24 20:27:37 · 337 阅读 · 0 评论 -
快速排序
快速排序快速排序其实很简单,静下心来看一遍,很快就会了1.算法思想(1) 从待排序数组序列中选取一个元素(通常选取第一个元素)为枢纽,设其关键字为x,然后将数组中其余小于x的元素移到前面,将大于或等于x的元素移到后面,将待排序的数组分成了两个子表,将x元素插到其分界线的位置。这个过程称为 一趟快速排序(2) 经过一次划分后,就以元素x为界,将待排序数组分成了两个子表,而且前子表中的所有元素...原创 2019-11-20 18:25:47 · 221 阅读 · 0 评论 -
递归与非递归实现strlen
1.非递归实现strlen2.递归实现strlen3.递归反向输出一个字符串/*递归与非递归实现strlen反向输出一个字符串*/#include<stdio.h>#include<windows.h>#pragma warning (disable:4996)int Strlen(char b[]);//求字字符串长度int Strlen_DG(c...原创 2019-11-19 16:45:40 · 189 阅读 · 0 评论 -
插入排序
直接插入排序【算法思想】直接插入排序是一种最基本的插入排序方法,其基本操作是,将第i个数,插入到前面i-1个已排好序的记录中。完整的插入排序是从2开始的,也就是将第一个元素视为已经排好序的单元素集合,然后将第二个数插入其中。插入排序是将第i个关键字k,顺次与其前面的关键字K(i-1),K(i-2),…,K1 进行比较,将所有大于K(i)的元素依次向后移动一个位置,直到遇见一个小于或者等于K...原创 2019-11-17 01:39:19 · 194 阅读 · 0 评论 -
反向输出一个单词序列
1.计算这个单词序列的长度2.定位空格的位置3.从空格后一位开始输出,每输出一个单词继续向前推进int main()//反向输出一个单词序列{char arr[20] = { “student a am i”};int i = 0;int j = 0;int k = 0;int p = -1;for (i = 0; i < 20; i++){if (arr[i] !=...原创 2019-11-13 23:23:43 · 364 阅读 · 0 评论 -
gobang五子棋
五子棋小游戏在数组学习的较为熟悉之后,想给自己一点进步的成就感,刚好了解到利用数组可以写一个五子棋游戏,于是便有的下面的游戏。1、首先了解五子棋的游戏逻辑,两个人一次下棋,直到一方五子连珠便为胜出。2、五子棋的胜出方式共有四种可能性,1横向,2纵向,3左上到右下,4左下到右上。依据以上逻辑便可以开始编写程序了。下面是程序运行截图:下面是部分代码:/*五子棋小游戏*///...原创 2019-11-05 22:22:08 · 802 阅读 · 0 评论 -
井字棋(tic tac toe)
井字棋 ,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。//头文件#ifndef __GAME_H__#define __GAME_H__#include<time...原创 2019-10-07 22:43:15 · 2817 阅读 · 0 评论 -
自定义函数的使用方法
自定义函数1、举一个简单的例子return_Type fun_Name (part1,*){statement;}return_Type 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等,也可以无返回值void。fun_Name 是函数名,它是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。statement 是函数体,它...原创 2019-08-13 01:40:51 · 1871 阅读 · 0 评论 -
求形如a+aa+aaa+的前n项和
求形如a+aa+aaa+的前n项和1、首先程序读入a,以及n2、由a生成aa,aaa,aaaa等等3、前n项相加#include <stdio.h>int main(){int a = 0;int n = 0;int i = 0;int tmp = 0; //临时变量int sum = 0; //存和printf(“求形如a+aa+aaa+的前n...原创 2019-08-13 01:30:19 · 2293 阅读 · 0 评论 -
自定义函数应用
为什么要使用自定义函数呢?它就像库函数一样,你要满足一个功能就要重复写满足这个功能的那一段代码,为了避免重复写浪费时间,把他写成一个函数,这样在在使用的时候直接调函数就行了。比如库函数printf 我们就可以直接调用使用。下面举例写一个判断素数的小程序#include <stdio.h>#include <math.h>int is_prime (int x) ...原创 2019-08-15 01:57:07 · 240 阅读 · 0 评论 -
c语言贪吃蛇简单实现
简单实现的贪吃蛇的基本功能/*首先程序分为三个大的部分:1.数据设计2.模块化设计3.实现过程*/#include <stdio.h>#include <stdlib.h>#include <windows.h> //光标设置的API#include <time.h> //事物随机#include ...原创 2019-08-19 00:39:02 · 464 阅读 · 0 评论 -
判断水仙花数
判断水仙花数水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数,它的每个位上的数字的 3次幂之和 等于它本身下面列举其他位数的自幂数名字一位自幂数:独身数两位自幂数:没有三位自幂数:水仙花数四位自幂数:四叶玫瑰数五位自幂数:五角星数六位自幂数:六合数等等…要判断一个数是不是自幂数,如一个三位数是不是水仙花数,首先1、判断这个数是几位数。2、把每一位数字拆开,进...原创 2019-08-02 00:16:45 · 1487 阅读 · 0 评论 -
输出100至200之间的素数
输出100至200间的素数素数,只能被1和它本身整除的数要判断100至200之间的数,所以使用for循环直接挨个判断100到200间的每一个数,平且判断每一个小于它的数是不是它的因子,显然不合适,因为这其中有很多不必要判断的项。1.非2的偶数一定不是奇数2.一个数的因数必定小于等于这个数的开平方所以有以下优化#include <stdio.h>#include<m...原创 2019-07-28 01:40:22 · 1257 阅读 · 0 评论 -
C语言输出乘法口诀表
C语言输出乘法口诀表乘法口诀表是从1到9依次相乘,所以可以使用for循环结构编写#include <stdio.h>int main(){int i; //初始化int j;for(i=0; i<10; i++){for(j=0; j<=i; j++) //乘法表有重复,只需输出一半,所以内层循环 j<=i 即可{...原创 2019-07-28 01:16:57 · 776 阅读 · 0 评论 -
猜数字游戏
猜数字游戏猜数字游戏:系统自动生成一个数字,玩家进行猜测那么就要使用库函数生成随机数,这要用到的是rand()函数, srand()函数,和time()函数。我们通过读取系统的时间来确定这个数。srand()用来设置rand()产生随机数起点,。使用rand()函数获取一个随机数如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至...原创 2019-07-29 23:42:03 · 158 阅读 · 0 评论 -
折半查找法(有序数组)
折半查找法在有序数组中查找时从数组的中间元素开始查找,如果中间元素正好是要查找的元素,则搜索过程结束,如果所找元素大于(小于)中间元素,则在数组大于(小于)中间元素的那一半中查找,每一次跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半,相对于遍历整个数组查找节省了很多时间1、找到最左边的下标left和最右边的下标right,...原创 2019-07-29 02:00:24 · 2899 阅读 · 0 评论 -
自定义函数(有序数组)二分查找
二分查找#include <stdio.h>#include <stdlib.h>int check_year(int arr[], int k, int left, int right) //二分查找函数{int mid = 0;while(left<=right){ mid = left+(right-left)/2; //用小数加上大...原创 2019-08-17 01:20:17 · 284 阅读 · 0 评论 -
判断闰年
公历闰年计算(按一回归年365天5小时48分45.5秒)1、非整百年:能被4整除的为闰年。(如2004年就是闰年,2001年不是闰年)2、整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)3、对于数值很大的年份:这年如果能被3200整除,并且能被172800整除则是闰年。如172800年是闰年,86400年不是闰年#include <stdio.h>...原创 2019-09-29 00:04:48 · 601 阅读 · 0 评论 -
汉诺塔(递归)
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。如果是64个盘子,我们先把上方的63个盘子看成整体,这下就等于只有两个盘子,自然很容易了,我们只要完成...原创 2019-10-03 23:27:48 · 168 阅读 · 0 评论 -
求第n位斐波那契数(非递归)
/*求第n位斐波那契数*/#include<stdio.h>#include<Windows.h>#pragma warning (disable:4996)void Fibonaccii(int n){int i = 0;int first = 1;int second = 1;int third = 0;if (n < 3)printf(...原创 2019-10-03 15:52:15 · 160 阅读 · 0 评论 -
求第n位斐波那契数(递归)
/*求第n位斐波那契数*/#include<stdio.h>#include<Windows.h>#pragma warning (disable:4996)int Fibonacci(int n) //递归函数{if (n < 3) return 1;else return Fibonacci(n - 1) + Fibonacci(n -...原创 2019-10-03 14:50:51 · 255 阅读 · 0 评论 -
输出一个数的每一位(递归方法)
/*利用递归按位输出一个数*/#include<stdio.h>#include<windows.h>#pragma warning (disable:4996)void Print(int x) //递归按位输出{if (x > 9){Print(x / 10);}printf("%d ", x % 10);}int main(){...原创 2019-10-03 01:18:25 · 414 阅读 · 0 评论 -
逆序输出数组
/*逆序输出数组改变数组内容输出数组*/#include<stdio.h>#include<windows.h>#pragma warning (disable:4996)void Reverse(int arr[],int sz) //逆序输出数组函数{int left = 0;int right = sz - 1;int tmp = 0;in...原创 2019-10-02 15:16:44 · 1113 阅读 · 0 评论