自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (LeetCode)全排列

1.首先先来理解题目,很简单对吧,其实就是数学上面的排列组合问题,数学上对于这种问题都有一个固定的公式去求解,但是很显然计算机上并没有这样的捷径。其实很好理解,但是首先必须清楚 bool函数 ,这个函数在这里不过多的讲解,仅仅粗略的讲解一下它的用法,这个函数其实是一种判定,它最后的结果仅仅只有 true 和 false 两种,其中 0 为 false,0!这个其实用的就是数学中的计算方法,我们仅仅只需要知道个数的总数即可,不必考虑它的每一种情况。这一部分是整个程序的核心,也是上述思路的一个实体化表现。

2022-08-19 20:32:10 1706 1

原创 C++ 第一阶段编程练习

天文单位是从地球到太阳的平均距离(约 150000000 公里或 93000000 英里),光年是一光年走的距离(约 10 万亿公里或者 6 万亿英里)(除太阳外,最近的恒星大约离地球 4.2 光年)。编写一个程序,其中的 main() 调用一个用户定义的函数(以摄氏温度值为参数,并返回相应的华氏温度值)。编写一个程序,其中的 main() 调用一个用户定义的函数(以摄氏温度值为参数,并返回相应的华氏温度值)。本题的关键就在这,只要创建这两个函数即可,因为返回的是语句,所以我们选择无返回值的函数进行创建。.

2022-08-04 21:25:15 1036

原创 C++知识讲解(二)

计算机是一种精确的、有条理的机器。在C++中,完成这种任务的一种相对简单的方法,是使用声明语句来指出存储类型并提供位置标签。我们创建了一个函数还不行,我们必须要将创建的函数放在需要使用的地方,那么该如何实现呢?同样的无返回值的函数意味着其没有返回的具体的数值,通常用于返回一些语句。相比得到的结果完全一致,但是二者的实现过程却不相同,这就是函数的调用。中应当为程序中使用的每个函数提供原型,这些不需要过多的理解,只需要知道这个特点即可,一定要注意格式哦!都有其各自的特点,面对不同的要求我们应该灵活的选择。...

2022-08-02 16:30:57 1250

原创 C++知识讲解(一)

有兴趣的读者可以去看看这本书,里面对C++的讲解非常详细,本文章也是从这本书中进行的学习和理解。跟进入程序第一天一样,我们先来输出一个“Helloworld!”以此来开始正式的C++学习。对于之前接触过其他语言的读者来说,这一部分可能很好理解。但是没有接触过任何语言的读者也不用担心,所有的问题都会在以后慢慢进行讲解。下面详细介绍这些元素。首先先来介绍一下mian()函数。的基本框架这几行表明有一个名为的函数,并表述了该函数的行为。其中是函数头,其后面的和中的部分叫做函数的函数体。中最后的呢。...

2022-07-31 20:27:18 1365

原创 (LeetCode) 组合总和——回溯法

给你一个 无重复元素 的整数数组candidates 和一个目标整数target,找出candidates中可以使数字和为目标数target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target 的不同组合数少于 150 个。...

2022-07-25 16:09:40 2022

原创 (LeetCode)在排序数组中查找元素的第一个和最后一个位置——二分法

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题......

2022-07-16 12:47:30 1252

原创 (LeetCode)搜索旋转排序数组——二分法

整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0

2022-07-15 11:18:19 2007 1

原创 (LeetCode)最大子数组和——动态规划

目录题目要求题目理解以及思路分析代码讲解总结看完这道题目第一眼是不是觉得这道题目很简单?,但是在多看你一眼就觉得有点难度,当我们下手准备去干他的时候不知不觉就发现我们做了半天的时间了。是不是很真实?下面本篇将对这道题进行讲解。(一) 看见一道题就要先搞懂题目。这个题目的要求就是在给定的数组中任意截取一段使得这一段的和是所有可能的结果中最大的。怎么样,看到这是不是突然觉得这题一点都不简单?很多人开始嘀咕:这得多少种可能啊,而且我怎么保证和就是最大的?(二) 当你有上面的疑问时,说明你的第一思路就是暴力解法,这

2022-07-10 12:45:35 912

原创 (LeetCode)电话号码的字母组合

题目要求这个题目乍一看很晦涩,但是理解题目后会发现跟之前一篇讲回溯法的类似,下面我们便开始进行讲解。题目理解以及思路分析(一) 首先先仔细阅读题目,先理解什么是回溯顾名思义,通过一次一次尝试或者结果的办法。按照条件往下执行,以达到目标。当某一步不符,或者达不到目标时,回到前一次,尝试其余的可能。这种路走不通就退回走其他的的方法就称为回溯法。(二) 理解了什么是回溯后,我们接着往下看先要科普下,排列和组合的含义:排列:有序排列的元素的集合。组合:不管排列顺序的集合。通过举例来了解组合排列:排列举例:如

2022-07-10 09:58:07 157

原创 (LeetCode)下一个排列

题目要求看完题目可能一头雾水,什么是字典序数?什么又是下一个排列,很多读者连题目都没看懂。不急本篇的讲解现在开始题目理解以及思路分析(一) 先来搞懂题目,搞懂了题目就已经成功了一半了。就拿1 2 3 这个序数来讲解吧其按照从小到大的顺序排列的顺序为:可以发现什么规律? 1.全数升序排列是最小的,全数逆序排列是最大的 2.第一个数字越大其字典序越大 3.后面的数字升序排列比逆序排列小这些是我们通过这个例子能找到的规律,但是对我们解决这道题目有什

2022-07-04 14:33:24 1893

原创 (LeetCode)括号合成(回溯法)

题目要求看见这个题是不是突然想起之前讲过的一个 “有效括号” 那一道题,其实二者有一些关系但是又有一些不同。话不多说,本篇正式开始。 题目理解以及思路分析(一) 养成一个习惯,看见一道题首先要搞清楚问题是什么意思,用到了哪些知识。本题一看感觉无从下手很难,其实拆开看会发现这个题其实就是数学知识。大家应该都学过 排列组合,本题便是用的这个思想,有效的括号我们之前讲过,所以我们知道了什么是有效的括号。因此,本题便有了思路。无非就是我们排列出 2n 长的字符串,然后一个一个判断是不是有效的括号,根据排列组合我们应

2022-07-03 21:46:54 400

原创 (LeetCode)合并两个有序链表——C语言

题目要求又是一个关于链表的题目,通过之前的几篇博客的讲解,大家对链表应该有比较熟悉的理解,因此对于本篇的讲解应该更容易理解。题目理解以及思路分析(一) 这个题目其实难度已经降低了,题目已经给出了 升序 的两个链表,也就是说链表的顺序已经排好了,我们只需要将其按照 升序 的顺序合并即可。(二) 相信看到这,很多读者都有了思路,比如我们先随便将两个链表合并,然后通过一个顺序排列的代码来实现排序,这样的思路是正确的,但是本篇要讲的是另外一种方法。(三) 我们要充分利用两个链表的 升序 的这个性质,我们先不着急把两

2022-06-26 17:37:53 3187 1

原创 (LeetCode)有效的括号【栈】

1.题目要求2.题目理解以及思路分析 3.代码分部讲解(1)第一部分(2)第二部分(3)第三部分4.总结这道题目用 “栈” 的方法和思想会更容易理解同时可以更简单的解决这个问题。(一) 这个题目就是将括号进行配对,因此便有配对成功与失败两种情况。(二) 根据题意可以看出 括号的长度必须为 偶数 ,否则一定是配对失败。(三) 右括号前必须有相对应的左括号,这样才可能配对成功;如果右括号前面没有相对应的左括号则其一定配对不成功。(四) 为了使得配对的思路清晰同时保证不乱,我们采用“栈”的方法,即将其对应的左括号

2022-06-26 15:21:20 446

原创 小组习题作业

第一题第四题第五题

2022-06-21 17:56:45 1289

原创 (LeetCode)删除链表的倒数第 N 个结点——C语言

很显然是一个 “链表” 的题目,关于链表,我之前一篇讲“哈希表”的时候曾讲过。其实就是一个数组。这一题的思路很好理解,下面我们就开始讲解吧。这一题最终目的其实就是删除链表的倒数第 n 个结点,并返回链表的头结点。这样讲可能很多人仍然理解不了,说白了我们把链表当作一个一维数组,也就是说,我们找到这个数字倒数第 n 个数,将它删除,然后输出一个新的数组。就是这么简单。题目理解了,那怎么具体的操作呢?,下面我们来一步一步的进行思路分析。这一点很重要,我们只有找了其长度 length 我们才能找到倒数第 n 个数具

2022-06-19 18:03:26 2066

原创 (LeetCode)三数之和——C语言

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。

2022-06-18 17:40:55 4100

原创 最多盛水问题(双指针思想)

目录1. 题目要求2. 题目理解以及方法的思路3. 程序框架4. 代码分部讲解C讲解:C++讲解: 这个题目很多读者乍一看不知道从何处下手,想了很多方法和思路,比如“动态规划”、“for循环”等等。这些方法和思路都可以完成这道题目,但是今天我们来讲解一个最简单的方法——“双指针”。这道题我们分别用 C/C++ 来进行讲解。(一)首先呢,我们先来理解这个题目,看看它到底要我们干什么?其实就是实际生活中的盛水问题,也就是一些老师和家长常说的“木桶定律”——一个木桶能装多少水取决于其最短的那个木板。明白这些后,我

2022-06-13 18:26:54 692

原创 (LeetCode) 两数相加-----C语言实现【详细讲解】

题目要求如下: 可以看出这题就是考察的结构体,以及链表的知识。链表跟上一篇哈希表有很大的联系,哈希表里存储的数据其实就是以链表的形式储存的。做题之前我们先来分析一下题目,看看我们究竟要做什么,怎么做?一:给了两个非空的链表,按照逆序的方式存储。OK ,我们先不管他是“逆序”还是“顺序”,对我们来说无所谓。两数相加嘛,很简单的加法计算,因此无论是“逆序”还是“顺序”我们都按照一一对应的位置进行相加就可以了,无所谓顺序如何。二:问题来了?仅仅是两数相加那么简单吗?如果是 9 + 2 呢?我们难道要输出这位的数字

2022-06-08 18:01:55 2963 7

原创 两数之和(LeetCode)——哈希表法(C语言)

上一篇文章留了个引子——用“哈希表”法来解决这个问题。今天,我们来解决一下。为什么用哈希表法?很简单因为它——快!讲解之前我们先来提出几个问题?1)什么是“哈希表”?2)怎么用“哈希表法”来解决这个问题?什么是“哈希表”?(摘自:百度百科)其实 哈希表 就是一种 散列表 ,其英文叫做 “Hash table”,本身就是一种 数据结构 。包含 键值对(key-value),通过一个 key 值来直接访问数据,查找速度快。看完这些仍然一头雾水对吧,下面举个简单的例子,我们应该就会更加理解哈希表。日常生活中都使用

2022-06-06 20:26:52 1924

原创 两数之和(LeetCode)

问题描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例一:示例二:示例三: 提示: 2 .........

2022-06-05 19:50:10 280

原创 【洛谷】 P1765 手机问题——C语言

一般的手机的键盘是这样的:要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会 把 w 变成 x。0 键按一下会出一个空格。你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。我们用“暴力枚举法”来解决。代码如下:#include<stdio.h>int main(){ char str[201]; int i,n=0; gets(str); for(i=0;str

2022-04-18 00:21:15 2666 1

原创 C语言最大公约数,最小公倍数。

#include<stdio.h>int fas(int x,int y){int a,t;if(x<y) {t=x; x=y; y=t; } do{a=x%y; x=y; y=a; }while(a!=0);return x;}int fab(int x,int y){int a,t;if(x<y) {t=x; x=y; y=t; }...

2022-04-15 00:59:50 141

原创 C语言水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。#include<stdio.h>int main(){int a,b,c;for(a=1;a<10;a++) {if(a*a*a+b*b*b+c*c*c==a*100+b*10+c) {printf("%d是水仙花数\n",a*100+b*10+c); continue; } for(b=...

2022-04-12 00:51:28 1488

原创 python函数练习题讲解

练习:1.写一个打印一条横线的函数。(提示:横线是若干个"-"组成)2.写一个函数,可以通过输入的参数,打印出自定义行数的横线。(提示:调用上面的函数)3.写一个函数求三个数的和4.写一个函数求三个数的平均值(提示:调用上面的函数)一、写一个打印一条横线的函数。第一题很简单,我们通过函数调用来解决。def printOneLine(): # 定义一个函数 print("-"*10) # 打印10个“-”printOneLine() # 调用函

2022-04-08 22:25:39 3181

原创 python中的函数(python基础知识第六天)

目录一、1.不含参数,不含返回值的函数 2.含参数,不含返回值的函数 3.含参数,带返回值的函数 4.含参数,带多个返回值的函数二、局部变量和全局变量1.局部变量2.全局变量3.特殊处理(在函数中修改全局变量)一、1.不含参数,不含返回值的函数def printOneLine(): print("-"*10) print("君子和而不同") print("-"*10)printOne...

2022-04-05 00:03:08 784

原创 元组的“增删改查”(python基础知识第五天)

tuple(元组)tuple与list类似,不同之处在于tuple的元素不能修改。tuple写在小括号里,元素之间用逗号隔开。下面我们下来看一下元组里的数据类型是如何的:tup1 = () #创建空的元组print(type(tup1))tup2 = (50) print(type(tup2))运行结果如下:<class 'tuple'><class 'int'>可见 tup2 = (50) 不属于元组。这里特别强调一

2022-04-02 23:57:14 2288

原创 python列表的“增删改查”(python基础讲解第四天)

在讲列表的“增删改查”之前,我们先来讲解什么叫做列表。举个例子:namelist = [] #定义一个空的列表namelist = ["小明", "小红", "小张"]print(namelist[0])print(namelist[1])print(namelist[2])运行结果:小明小红小张可见python里面的列表就相当于“数组”,可以将列表里的数据按下标位置来输出。其包容性很大,可以有很多形式,比如数字和字符串的结合testlist = [1, "

2022-03-30 23:05:28 2823

原创 for循环和while循环的用法以及break和continue的区别(python基础知识讲解(第三天))

1.for循环:for i in range(5): # 冒号一定不要忘了!!! print(i, end="")运行结果如下:01234可知,上述代码的可以实现将 i 从 0 到 4 依次循环输出。明白这些,下面我们将其进行改进:for i in range(0, 12, 3): # 意思是从 0 开始到 12 结束(但不包括 12 本身的数) 步进值为 3(每次+3) print(i, end="\t")运行结果如下:0 3 6 9可以看

2022-03-27 23:10:51 1279

原创 C语言——杨辉三角的两种形式

杨辉三角是个经典的问题,其形式为:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1今天我们便来通过C语言编写一个程序来使其输出这个杨辉三角。#include<stdio.h>#define N 10 //限定杨辉三角的行数,这里以取10

2022-03-24 23:22:55 1099

原创 用python实现学生成绩等级分级 和 猜拳游戏程序(python基础知识讲解(第二天))

1.强制类型转换:a=int("123")print(type(a)) *******************************************************************************************运行结果如下:<class 'int'>可见数据的类型被改变了。因此通过这种方法可以进行如下操作:a=int(input("输入:")) print(type(a))b=100print("总和为:%d"%

2022-03-23 22:57:03 8783

原创 python基础知识讲解(第一天)

1.标准化输出:print("hello,world")print('hello,world')print("a")print('a')运行结果如下:hello,worldhello,worldaa可以看见python跟其他语言不一样的地方,可以一直往下走,进行运行。同时对于字符串的输出可以用 单引号 也可以用 双引号 ,都可以实现输出字符串的目的。2.格式化输出:age = 18print("XX是 %d 岁"%age) #中间不需要加 逗号(跟C语言

2022-03-22 13:16:23 1689

原创 复现贪吃蛇程序——吃食物增加长度(最后一篇)

本节便是贪吃蛇程序的最终部分,实现吃食物增加长度的功能,当二维数组canvas[High][Width]的元素值为-2时输出食物数值‘F’。其实现思路和3.4.2节中小蛇的移动类似,只需保持原蛇尾,不将最大值变为0即可。先奉上完整的代码:#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<windows.h>#define High 20 ...

2022-03-20 22:52:07 4495 1

原创 复现贪吃蛇程序——判断游戏失败(第四部分)

本节进行贪吃蛇程序的第四部分,当小蛇和边框或自身发生碰撞时游戏失败。void moveSnakeByDirection(){ int i,j; for(i=1;i<High-1;i++) for(j=1;j<Width-1;j++) if(canvas[i][j]>0) canvas[i][j]++; int oldTail_i,oldTail_j,oldHead_i;oldHead_j; int max=0; for(i=0;i

2022-03-19 23:09:00 3968

原创 复现贪吃蛇程序——玩家控制小蛇的移动(第三部分)

前两篇文章分别介绍了“构造小蛇”和“小蛇的移动”两部分代码。这一次将进行第三部分“玩家控制小蛇移动”第三步的实现比较简单(可以稍微轻松一下了),在updateWithInput()函数中按a,s,d,w键改变moveDirection的值,然后调用moveSnakeByDirection()实现小蛇向不同方向的移动。void updateWithInput() //与用户输入有关的更新 { char input; //定义一个字符变量 if(kbhit())

2022-03-18 21:55:20 1116

原创 复现贪吃蛇程序——小蛇的移动(第二部分)

复现贪吃蛇程序——小蛇的移动(第二部分)实现小蛇的移动是贪吃蛇游戏的难点。图 3-13 列出了小蛇分别向右、向上运动后对应二维数组的变化,从中我们可以得出实现思路。本游戏的第二步为定义变量 int moveDirection表示小蛇的移动方向,值为1、2、3、4分别表示小蛇向上、下、左、右方向移动,小蛇的移动在 moveSnakeByDirection()函数中实现。 假设小蛇元素为 54321,其中 1 为蛇头、5432 为蛇身、最大值 5 为蛇尾。首先将所有大于 0 的元素加 1,得

2022-03-18 00:00:59 1878

原创 复现贪吃蛇程序——构造小蛇

要求:在画面中显示一条静止的小蛇。对于二维数组canvas[High][Width]的对应元素,值为0输 出空格,值为-1输出边框#,值为1输出蛇头@,值为大于1的正数输出蛇身*。在startup() 函数中初始化蛇头在画布的中间位置(canvas[High/2][Width/2]=1;),蛇头向左依次生成4 个蛇身(for(i=1;i<=4;i++) canvas[High/2][Width/2-i]=i+1;)...

2022-03-16 23:49:53 1030

原创 总结c语言基础算法——冒泡排序法和选择排序法

1.首先无论何种排序方法其最终目的是按要求将所给数据进行排序。而在C语言中可以有很多排序的方法,这里着重介绍的是常用的较为基础和重要的算法——冒泡排序法和选择排序法。下面将举一个例子进行讲解:要求:从键盘输出10个整数,要求对它们按照从小到大的顺序排列。冒泡排序法:#include<stdio.h>int main(){ int a[10]; int i,j,t; printf("输入10个整数:"); for(i=0;i<10;i++)

2022-03-16 14:03:01 4158

空空如也

空空如也

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

TA关注的人

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