- 博客(28)
- 收藏
- 关注
原创 LeetCode_罗马数字转成整数
罗马数字转成整数可以用map集合来存储罗马数字,在判断是加法或减法。 class Solution{ Map<Character,Integer> symbolValues = new HashMap<Character,Integer>(){{ put('I',1); put('V',5); put('X',10); put('L',50); put('C',100); put('D',500); put('M',1000);
2021-09-27 19:42:01
161
原创 LeetCode_回文数
回文数有两种解题思路:一:将数字转换成字符串形式,首尾逐个比较。二:将数字从末尾取模,并累加成新的数字,在比较是否相等,相等即为回文数。class Solution{ public boolean isPalindrome(int x){ if(x < 0) return false; //为负数时不可能存在回文数 Integer s = x; String str = s.toString(); char c1,c2; //用于保存首尾字符 for(in
2021-09-26 19:32:53
144
原创 LeetCode_最长公共子序列
最长公共子序列示例:找最长公共子序列,可以位置不同,但顺序必须相同。例如:“seaa"和"aeat"的最长公共子串是"ea”。虽然两个字符串都有两个a但顺序不同,所以只有ea符合。解题思路:用"sea"和"eat"做示例。可以列出一个二维数组:如下首先,第一个为空字符,即可得到,空字符和任何字符的最长公共子序列为0。先用e与字符串"sea"逐个比较得到下图直到比较“e”和“e”相等,可以得到最大公共子序列为1,可以理解为是前面最大公共子序列+1。而“e”和“a”不相等,所以最大公共子序列是取前
2021-09-25 22:34:17
284
原创 函数指针与函数指针数组
函数指针与函数指针数组函数指针函数指针数组函数指针每个函数都是有地址的,调用函数实际上就是找到该函数的地址。使用函数指针可以传递函数。定义:定义函数指针有多种方法如:使用auto需要注意,在定义时必须要初始化,但可以是任意函数类型。还可以使用typedef定义,但注意,typedef定义的是一个类型,真正定义需要:函数指针的用法:定义一个ptrCalc函数指针,指向att()函数,在实行print_result()函数,把ptrCalc,num1,num2传入。其中ptrCal
2021-06-12 18:04:16
134
原创 习题10-4 递归求简单交错幂级数的部分和
递归求简单交错幂级数的部分和递归思路:x - x 乘以 函数的上一次次幂。double fn( double x, int n ){ if(n == 1) return x; else return x - x * fn(x, n - 1);}
2021-02-02 15:12:06
131
原创 习题10-6 递归求Fabonacci数列
递归求Fabonacci数列本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。函数接口定义:int f(int n);函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。递归思路:先确定为0时返回0,为1时返回1。int f(int n){ int sum; if(n == 0) return 0; else if(n == 1)
2021-02-02 14:52:32
309
原创 习题10-8 递归实现顺序输出整数
递归实现顺序输出整数本题要求实现一个函数,对一个整数进行按位顺序输出。函数接口定义:void printdigits( int n );函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。思路:递归,每次传入的数除以10。退出条件,当传入的数小于10void printdigits( int n ){ if(n < 10) printf("%d\n",n); else{ printdigits(n / 10); printf("%d
2021-02-02 14:41:28
475
原创 习题10-2 递归求阶乘和
递归求阶乘和本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+…+n! 的值。函数接口定义:double fact( int n );double factsum( int n );函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+…+n! 的值。题目保证输入输出在双精度范围内。fact函数递归思路:在数的阶乘中,0是特殊存在而外返回。构造:n - 1的阶乘 * n。退出条件:当n为1的时候返回n的阶乘也就是1double f
2021-01-21 17:13:52
2959
原创 习题10-1 判断满足条件的三位数
判断满足条件的三位数本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。函数接口定义:int search( int n );其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。思路1:从101逐个增加判断是否为完全平方数,在取出个位十位百位比较,是否有相同的两个数字,计数器加1。int search( int n ){ int num = 0; //计数
2021-01-21 16:53:05
2715
1
原创 练习10-1 使用递归函数计算1到n之和
使用递归函数计算1到n之和本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:int sum( int n );该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。int sum(int n){ int sum; if(n <= 0) return 0; else sum = sum(n - 1) + n; return sum;}...
2021-01-15 15:30:37
425
原创 习题8-8 判断回文字符串
判断回文字符串本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。思路:声明一个末尾指针,与传入指针逐一比较,循环次数取长度/2次,不相等时返回false。未返回false则返回true。bool palindrome( char *s
2021-01-15 14:24:31
667
原创 习题8-6 删除字符
删除字符本题要求实现一个删除字符串中的指定字符的简单函数。函数接口定义:void delchar( char *str, char c );其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。思路1:数组方法,当找到要删除的字符时,将该字符后面的所有字符往前移动,注意需要判断是否两个连续要删除的字符。void delchar( char *str, char c ){ int i = 0; //用于遍历
2021-01-13 14:29:58
2453
原创 习题8-5 使用函数实现字符串部分复制
使用函数实现字符串部分复制本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数接口定义void strmcpy( char *t, int m, char *s );思路1:使用数组的方法部分复制void strmcpy( char *t, int m, char *s ){ int j = 0; for(int i = m - 1; t[i] != '\0'; i++){ //当t[i]没有遍历最后一位时,一直复制 s[j] = t[i]; j+
2021-01-13 11:36:58
899
原创 习题8-4 报数
报数报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个
2021-01-13 11:24:57
137
原创 习题8-3 数组循环右移
数组循环右移思路:移动m位,可通过循环进行控制,在内存循环完成交换。int ArrayShift( int a[], int n, int m ){ int temp; //临时交换 int count = 1; //每次移动1位 while(m){ //循环m次 for(int i = n - 1; i > 0; i--){ temp = a[i]; a[i] = a[i - count]; a[i - count] = temp; } m--;
2021-01-11 17:07:35
121
原创 习题6-5 使用函数验证哥德巴赫猜想
使用函数验证哥德巴赫猜想本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以
2021-01-10 13:42:38
1095
原创 习题6-4 使用函数输出指定范围内的Fibonacci数
使用函数输出指定范围内的Fibonacci数本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。...
2021-01-10 12:13:07
3130
原创 习题6-3 使用函数输出指定范围内的完数
使用函数输出指定范围内的完数本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义int factorsum( int number );void PrintPN( int m, int n );其中函数factorsum须返回int number的因子和;函数PrintPN要逐行输出给定范围[m, n]内每个完数的
2021-01-09 15:13:50
733
原创 习题5-6 水仙花数
水仙花数水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。思路:题目的关键在于输入的数为100~10000,意味着首先需要考虑到输入的是三位数还是四位数。其次并没有引入math.h因此不能使用pow函数。int narcissisct(int number){ int sum; //用于最后累加求和判断
2021-01-08 16:25:36
488
原创 1002 - 写出这个数
1002 - 写出这个数思路:由于n的大小必不可能使用int或long int来保存,所以需要用到字符串,以及需要中文输出就需要用到switch和case第一步——求和int n,num; //n用于输入,num用于累加while((n = getchar()) != '\n'){ num += n - '0'; //获取字符后,实际为ascll码需要减去0的ascll码}第二步——保存到字符串中int count = 0; //字符串下标char *str[100]; w
2021-01-07 17:15:53
137
原创 C++引用
引用与指针引用引用的概念引用的使用引用的应用将引用作为参数将引用作为返回值引用与指针的区别引用引用的概念引用就是某一变量(目标)的一个别名,是某一个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使该引用名称或变量名来指向变量。引用的使用引用的声明:类型标识符 &引用名 = 目标变量名;例如:其中&为引用,可以称为r是一个初始化为i的整型引用。引用的应用将引用作为参数引用的一个重要作用就是作为函数的参数。C语言中函数参数传是值传递,如果有大量的数据作为参数
2020-12-17 18:22:14
143
原创 C++指针学习
指针指针什么是指针?即定义空指针使用指针指针什么是指针?即定义指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,需要在使用指针存储其他变量地址之前,对其声明。声明如下:在这里,int是指针的基本类型,ptr_name是指针变量的名称。用来声明指针的星号是用来指定一个变量为指针。定义指针类型必须是一个有效的C++数据类型。例如还可以:所有的指针实际数据类型,不管是整型、浮点型、字符型或是其他,都是一个代表内存地址的长的十六进制数,其所占内存空间为4个字节。一个
2020-12-16 18:10:00
383
原创 C++,多重if和switch
多重ifif语句的用法:判断括号中的num是否为5,如果是执行大括号下面的代码,否则直接跳过不执行。流程图:需要注意的是if是由大括号的,也可以省略不写,推荐是写,可以让自己更清晰。这里运行的结果为num = 3。上面的写法其实换一下加上括号就一目了然,这样因为num /= 10所以第一个if语句就没有进去,也就不会执行下面的,所以num还是3。当用多个if时:首先第一个if,条件时当num=4且x=4时执行,这里只满足一个,所以不会执行。接下来if条件为num=4,所以执行num–,这时
2020-09-02 17:38:18
2371
原创 C++、运算符(2)
单等号在数学中=通常被叫做等于号,但在计算机中虽然效果相似但其原理不一样。单等号=也可以成为赋值,计算顺序从左往右。例如 num = 4;原理是4赋值给了num,所以num的值为4。复合运算符num += 90;意思就是将num + 90在赋值给num,最后的结果也就是100。同理其他运算符也是通用的。位运算符&运算符:两个操作数同时为1时结果为1。例如原理就是,首先需要把4和5换成2进制数,也就是100和101,在进行比较如下:| 运算符:两个操作数只要一个为1,结果就为1。例
2020-06-21 15:14:17
308
原创 C++中的%、++、--、运算符
运算符c++中的很多运算符都与c语言相似:算术运算符:1、+运算符:将两个操作数加起来2、-运算符:将第一个操作数减去第二个操作数3、*运算符:将两个操作数相乘4、/运算符:分子除以分母5、%运算符:取模运算符,整除后,取余数6、++运算符:自增运算符,整数数值加17、- -运算符:自减运算符,整数数值减一关系运算符:1、==运算符:校验两边的操作数是否相等,相等则条件为真2、!=运算符:校验两边操作数是否不等,不等则条件为真3、>运算符:校验左操作数是否大于右操作数,如果大于
2020-06-17 22:36:54
35651
3
原创 C++、SetConsoleTitle、setfill、char、cin
char:位数:8位空间:1个字节取值范围:-128~127表示一个字节,里面有8位,也就是二进制表示最大值为11111111,最小值00000000。第一位用来表示符号,所以实际最大值为:1111111,最小值为:0000000,换算成十进制就是127,-128。也可以写成uchar,表示unsigned char 无符号char型所以最大值是11111111,范围为0~255。char类型有没有符号取决于编译器SetConsoleTitlesetconsoletitle()函数可以修
2020-06-15 16:27:53
1684
原创 C++中的变量命名,float和double
C++变量的命名C++中变量名(标识符)只能由字母、数字和下划线3种字符组成;名称第一个字符必须为字母或下划线,不能是数字;变量名不能包含除_以外的任何特殊字符如:#、%、逗号、空格等…;不能使用保留字(74个保留字)也称关键字如下注意:1、变量名不能重复。2、一条语句可以声明多个相同类型的变量这里i,j,k都是int类型的变量。float位数:32位;空间:4个字节;取值范围:-3.4E+38~+3.4E+386~7位有效数字这里输出的结果只能显示最大的6位,因此运行的结果为
2020-06-14 16:35:42
4582
原创 JAVAEE的安装与配置
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器是你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用M
2020-06-13 21:15:46
20008
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人