自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(334)
  • 资源 (1)
  • 收藏
  • 关注

原创 问题 B: 出租车费(详细讲解)

题目:某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。现在给你整个行程的公里数,请你计算坐出租车的最小花费。**输出:**输入包含多组测试数据。每组输入一个正整数n(n<1000

2021-06-28 20:29:39 65

原创 问题 C: 神奇的口袋(背包问题---递归 || 二进制枚举)

题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的

2021-06-19 13:23:49 66

原创 问题 B: 数列

题目描述编写一个求斐波那契数列的递归函数,输入n 值,使用该递归函数,输出如下图形(参见样例)。输入输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10。输出对应每个样例输出要求的图形(参见样例格式)。输入:16输出: 0 0 1 1 0 1 1 2 3 0 1 1 2 3 5 8 0 1 1 2 3 5 8 13 210 1 1 2 3 5 8 13 21 34 55思路:金典斐波那契数列,主要是输出格式。对于

2021-06-19 12:55:16 59

原创 通俗理解张量tensor(AI入门)

在深度学习的过程中,我们经常会遇见什么是张量这个名词。那么什么是张量呢?他又用来做什么呢?概念: 几何代数中定义的张量是基于向量和矩阵的推广,通俗一点来理解的话,而我们可以把标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。定义:张量的严格定义是利用线性映射来描述的。与矢量相类似,定义由若干坐标系改变时满足一定坐标转化关系的有序数组成的集合为张量。 从几何角度讲, 它是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换(其实就是基向量变化)而变化的东西。最后结果就是基向量与对应基向量上

2021-06-19 11:20:15 117

原创 插入排序算法详细剖析

插入排序分为:直接插入排序,折半插入排序,希尔排序。这里我们主要分析最简单的:直接插入排序自如其意,插入排序,就是每次读入一个元素的时候,在已经有序的序列中找到他应该插入的位置,然后插入保证当前序列还是有序,如此只能所有的元素都插入完毕。int a[maxn],n;void insertSort(){ for(int i=2;i<=n;i++){ int temp = a[i],j = i; whlie(j>1 && temp

2021-06-14 18:31:10 40

原创 选择排序算法详细剖析

选择排序的基本思想是:每一趟(比如说第i趟)在后面n-i+1个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下一个,就停止我们这里还拿从小到大排序来讲解。void selectSort(){ for(int i=1;i<=n;i++){ int k = i; for(int j=i;j<=n;j++){ if(a[i] < a[k]){

2021-06-14 18:20:48 15

原创 冒泡排序算法详细剖析

首先我们要知道一个前提知识 ,冒泡排序 属于 交换排序 的一种。那么什么是交换排序?答:根据序列中两个关键字的大小的比较结果来决定是否交换这两个记录在序列中的位置。冒泡排序的思想:1.当我们拿到一个混乱无序的序列的时候,我们可以从前往后依次两两比较相邻元素的值。这里我们假定想要序列从小到大排列。那么每次对比 a[i-1] 与 a[i],若a[i-1] > a[i] 。那么我们就交换这两个元素的位置。原序列:2 5 4 3 1对比 2 < 5 不做处理对比 5 > 4 交换,

2021-06-14 12:06:32 20

原创 《数据结构高分算法笔记》3.6小节——入门模拟->字符串处理

1. A.字符串连接2. 首字母大写4. 字符串的查找删除5. 单词替换6. 字符串去特定字符7. 数组逆置8. 比较字符串9. 编排字符串10. 【字符串】回文串A#include<bits/stdc++.h> using namespace std; int main(){ string s1,s2; while(cin>>s1>>s2){ cout<<s1<<s2<<en

2021-06-13 17:11:08 19 1

原创 字符串内容的替换

字符串string类有成员函数replace()string str;string s1;str.replace(pos,len,s1);//使用s1的长度为len,从str的pos位置开始替换str.replace(pos,len,s1,pos1,len1);//使用s1的子串从pos1开始长度为len1。替换str中从pos开始长度为len的长度...

2021-06-11 21:27:37 41

原创 问题 C: 字符串的查找删除(字符串好题)

题目描述:给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。输入输入只有1组数据。输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。输出删除输入的短字符串(不区分大小写)并去掉空格,输出。//样例//输入in#include int main(){printf(" Hi ");}//输出#cludetma(){prtf("Hi");}思路:根据题意,不区分大小写,即有 在主串中删除 in, In ,IN,iN,

2021-06-11 20:56:11 32

原创 十进制大整数转化为二进制输出

相信一般整数的进制转换大家都会,那么大整数数转换为二进制怎么去做呢?根本存不下,只能用字符串来表示。其实只要我们理解了十进制整数转化为二进制的方法,那么相对大数来讲,思路还是一样的。#include <stdio.h>#include <string.h>int main(){ char m[32]; int len; while(scanf("%s",&m)!=EOF){ len=strlen(m); int sum=1,size=0; char

2021-06-10 18:02:09 78

原创 数制转换(一个任意进制的数转换为另一个进制的数)

题目描述:求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。输入:输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。输出:可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1

2021-06-10 16:49:11 89

原创 1010 一元多项式求导 (25 分)(全网最详细讲解!避坑)

思路:简单说下这个题目,体面解释并不清晰;要注意:1.当第一组系数和指数,指数就为0时,那么这时候需要直接输出“0 0”,然后return2.当指数为0的组数在输入的多组数据之间的时候,需要不输出。不做任何输出。3.在2的基础上,如果一组样例后几组为指数为0的,那么这个时候我们要控制格式输出使得最后一组输出的没有空格!所以我们要实现找到有效输出的最后一组输出的样例。我们不知道每个测试点的组数是多少,所以我们第一思路直接去做的话,每次输出一组会导致格式错误,尽管题目本身并不难。那么我们仔细审题,.

2021-05-28 14:21:10 69

原创 Visual+C++入门----安装以及创建第一个窗口程序

安装包:点击这里提取码:6666安装过程比较简单,因为是破解版,中间有个需要什么序号你随便输入就可以下一步了。然后就是一路选择安装路径,然后最后就好了。鄙人是一个蒟蒻在校生,觉得平时写的console下的黑窗口程序过于不美观,由此想学习了解写窗口程序的编程以及想学习一些窗口游戏开发。下面我们主要来讲一讲如何创建一个第一个简单的窗口程序。1.我们首先打开我们下载的VC++6.0。(过程中会让你确认是否创建桌面快捷,如没有,打开你的安装路径,然后找到后缀为.exe的可运行文件)2.点击新建,然后我们

2021-05-25 10:59:31 101

原创 Day1-Python基础练习课后作业

输出9*9乘法口诀表def table(): #在这里写下您的乘法口诀表代码吧! #输出一个9*9乘法表 for i in range(1,10): for j in range(1,10): if i >= j: print("{}*{}={}".format(j,i,i*j),end=' ') print('\n')if __name__ == '__main__': table

2021-05-19 10:08:06 33

原创 有关内联函数的解读

Inline内联函数我们要知道每一次函数调用都会带来一些时间和空间上的花销。那么如果一个代码本身就不多,又频繁被调用的函数,就很烦!要是就写吧,得在代码块中写好多次,不写就调用时间花销又大。好在,C++已经帮我们考虑了这个问题,为我们提供了内联的机制。所谓内联的机制,就是仍然使用自定义函数,但是在编译的时候,把函数代码插入到函数调用处,从而免去函数调用的一系列过程,就像普通顺序执行的代码一样。使用方法超级简单:只需要在函数定义的前面加上inline就行了。参考传送门...

2021-05-09 14:43:18 18

原创 有关函数模板的解读

我们前面学习了函数重载,可以处理多种数据类型,虽然是同一个名字,但是仍然要分开定义。那么,C++提供函数模板这一机制,大大提高代码的可重用性。函数模板: 是一个可以创建一个通用的函数,可以支持多种形参。用关键字template来定义,形式如下:template<class 类型名1,class 类型名2...>//声明语句返回值 函数名(形参列表) 模板参数表{ 函数体}我们可以运行一下代码示例来体会,就是不用写多个函数了,直接模板函数中的T1,T2类型将根据实际传入的类

2021-05-09 14:34:26 20

原创 有关C++函数重载的解读

在实际的代码编写过程中,有时候对同一个功能的函数,可能处理的对象类型不同,则需要重新实现一遍这个函数。C++为了解决这一问题,支持用函数重载来解决这个问题。函数重载: 即两个或两个以上的函数,函数名相同,但是形参类型或个数不同,编译器会根据调用方传入的参数的类型和个数,自动选择最合适的一个函数来进行绑定调用,自动实现选择。#include<iostream>using namespace std;int add(int a,int b){ cout<<"(int ,

2021-05-09 14:21:50 25

原创 带默认形参值的函数

在C++中,允许在自定义函数的形参列表中,给形参一个默认的值,这样子在调用的时候如果有实参,那么按照实参传递给形参的方法调用;没有指定对应的实参,那么形参将使用默认值。#include<iostream>using namespace std;int add(int a=3,int b=5){ return a+b;}int main(){ cout<<add(10,20)<<endl;//将10和20分别给a和b cout<&

2021-05-09 14:14:34 33

原创 有关C++类的解读

相信大家都了解C语言中的结构体我们写一段示例代码如下:在这段代码中,我们定义了一个struct stu的结构体类型,里面有五个成员变量。struct stu{ int num; char sex; int math_score; int en_score; int c_score; };int main(){ struct stu A; return 0;}而C++的类也相似,只不过比C的结构体高级了一些。不叫结构体了。叫类。并

2021-05-09 14:02:07 15

原创 1482. 制作 m 束花所需的最少天数(经典二分+验证答案)

题意:给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。思路:对于不能满足的情况无非是 bloomDay.size() < m * k;我们很容易得到天数无非是在 bloomDay 元素中的最小值与最大值之间。那么我们自

2021-05-09 13:39:58 17

原创 东华大学2020年程序设计竞赛(同步赛) 题解

A Shooting Game思路 : 排序签到题#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;struct node{ int k; int w; int r; int b; int tot;}a[1000];int main(){ int n; cin>>n; int ans = -inf; int flag;

2021-05-08 10:53:05 36

原创 人工智能基础知识二 --- 知识表示

人类的智能活动主要是获取并运用知识。知识是智能的基础。为了使计算机具有智能,能模拟人类的智能行为,就必须使他具有知识。但知识需要用适当的模式表示出来才能存储到计算机中去,因此,知识的表示成为人工智能中一个十分重要的研究课题。2.1 知识与知识表示的概念知识:就是在长期的生活及社会实践中,在科学研究及实验中积累起来的对客观世界大的认识与经验。知识:把有关信息关联在一起所形成的信息结构。信息关联形式:如果…,就…eg:如果大雁向南飞,则冬天就来了。知识反应了客观世界中事物之间的关系,不同事物或者相

2021-05-08 10:52:49 147

原创 人工智能导论入门(二.机器学习基础)

首先我们要明白 人工智能 机器学习 深度学习的关系。其中 人工智能 > 机器学习 > 深度学习 什么是机器学习?从字面意思来理解的话,就是使得“机器”具有学习的能力,从而能够自主工作,解放人类生产力。那么官方解释:专门研究计算机怎么模拟或实现人类的学习行为,以或得新知识或技能。 机器学习的一般过程从上图我们可以得知所谓的机器学习就是:让机器从大量数据或者历史经验中,学习某种习性-----找到一个适合的函数,然后对新的场景

2021-05-08 09:20:46 91

原创 人工智能导论入门(一.人工智能概述)

人工智能(Artificial Intelligence, AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 人工智能发展历程 人工智能 & 机器学习 & 深度学习关系人工智能: 能使计算机模仿人类的任何

2021-05-08 08:33:03 108

原创 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

思路:由二叉搜索树的性质我们很容易得到从根结点到p和q的路径,那么p和q的最近公共祖先就是从根结点到他们路径上的最后一个相同的结点。我们从根结点遍历搜索二叉树找到p跟q的路径并记录下来,然后遍历循环路径,找到第一个不相等的点,说明在此时分叉了,那么上一个我们存下来的节点,就是最后一个公有的结点了,即为最近公共祖先。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode .

2021-05-06 13:25:02 31

原创 剑指 Offer 52. 两个链表的第一个公共节点(指针法)

浪漫相遇~你变成我,走过我走过的路。我变成你,走过你走过的路。然后我们便相遇了..思路:用两个指针分别指向A,B的头结点,然后循环遍历链表,当A遍历完后将其指向B的头结点,B遍历完后将其指向A的头结点。当我们走完各自的路 重新回到对方最初的地方如果我们的缘分不是两条平行的线那么一定会在第一次有交集的地方重新相遇codeclass Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode

2021-05-05 13:51:47 11

原创 剑指 Offer 65. 不用加减乘除做加法

刷爆Leetcode剑指offer第一天思路:见图解class Solution {public: int add(int a, int b) { // 后续用a表示非进位和,b表示进位,当进位为0,则表示计算结束 return b == 0 ? a : add(a^b, (unsigned int)(a&b) << 1); }};...

2021-05-05 13:27:29 8

原创 The Fair Nut and Strings(思维)

题意:在所有长度为n,字典序在s和t的,只有’a’,'b’组成的字符串中,选取k个,然后让他们前缀组成的集合最大。思路:如果我们把字符二叉树画出来,一个字符串对应根到叶子的一条路径。我们发现如果某一层的节点数比k小,那么这一层的节点都可以被经过。按照题意处理即可。#include<bits/stdc++.h>#define maxn 500010using namespace std;typedef long long LL;LL n,k;char a[maxn],b[maxn]

2021-05-01 15:23:13 21

原创 [HAOI2016]放棋子(错排+高精度)

题意:给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足每行只有一枚棋子,每列只有一枚棋子的限制,求有多少种方案。思路: 假设我们把每行障碍上的那个元素 当做 元素本来就在的位置。那么题意就是让其全部错位—没有一个元素是在他原本的位置上我们处理这样一个数组f[n]表示n个数错排的方案数f[n] = (f[n-1] + f[n-2])*(n-1)f[1] = 0f[2] = 1

2021-04-29 09:16:55 19

原创 [CQOI2014]数三角形(组合计数+容斥原理)

题意: 给一个n*m的网格,让你计算三角形三个顶点都在网格点上的三角形的数量。思路:首先我们可以知道,n * m的网格一共有 sum= (n+1)*(m+1) 个网格点。然后在一个矩形的网格中,要想组成三角形,只需要满足三点不共线即可我们预处理C[i][j]这样一个数组,表述从i个格点中抽取j个格点的数量。那么ans = C[sum][3] - 三点共线那么接着我们来考虑三点共线的情况:1.横着共线2.竖着共线3.斜着共线1.对于横着共线:C[n+1][3]*(m+1);我们可以理解

2021-04-28 18:12:41 80

原创 Fuel Economy(贪心)

题意:用一辆小破车送牛,两地距离为D,初始油量为B,油箱上线为G,路途有加油站数量为N。每个加油站有两个参数:1.距离起始点的距离2.每升油的价格问:能否达到目的地,能的话输出最少花费,不能的话输出-1.思路:判断是否不能到达,比较简单,即为判断任意两个加油站之间的距离跟最大加油量G之间的关系(最终位置也算一个加油站点)。到第一个加油站要看初始油量B(特判)。然后就是能到达的情况下,我们如何使得花费最少。那么我们思考,每到一个加油站,我们是不是要考虑要不要加油呢?如果我车子的剩余油量足够我跑

2021-04-27 15:33:41 24

原创 LCP 22. 黑白方格画(枚举+组合数)

思路:枚举+组合数class Solution {public: int paintingPlan(int n, int k) { if(n*n == k) return 1; int res = 0; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < n ; j++){ if(i * n + j * n - i * j ==.

2021-04-23 11:36:31 22

原创 101. 对称二叉树

思路:根结点不用管,肯定对称,然后递归处理左子树,右子树即可。class Solution {public: bool isSymmetric(TreeNode* root) { return ismirror(root,root); } bool ismirror(TreeNode* p,TreeNode* q){ if(!p&&!q)//都为NULL return true; .

2021-04-20 13:51:01 23

原创 100. 相同的树

思路:一开始拿到二叉树的题目就很害怕,但是二叉树是具有相同的子结构的,这说明什么,我们可以利用递归来解决这个题目。着眼于当前,如果当前的结点(其实可看做一个个根结点),如果都指向NULL , 那么递归到这一步的时候说明前面的结点都完全相同,这个时候直接返回true。如果一个一个为空一个不为空,说明不相同,返回false。当前两棵二叉树的根结点不相等,也返回false。否则就递归左子树 && 右子树(因为必须结构数值都完全喜相同)/** * Definition for a bin.

2021-04-19 16:08:03 10

原创 83. 删除排序链表中的重复元素

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。思路:最直接的思路的话,因为链表是按照顺序排列的,所以我们可以依次比较相邻的两个元素的值。相等的话就可以跳过一个元素,把下一指针结点直接指向下下个元素。依次直至链表为空。需要引入一个辅助的指针。/** * Definition for singly-linked list. * struct ListNode { * int val; *

2021-04-19 15:06:30 15

原创 2. 两数相加(力扣)

参考官方题解//题意:给两个链表,每个链表表示的是倒序输入的两个数,例如[1,2,3] [1,2,3]。然后要求求出//两个链表的和并且以链表的方式返回。例如[2,4,6];表示123 + 123 = 246; //思路:跟归并排序的思路一致,依次将对应位置的数字相加,然后注意进位。直到一个链表的元素循环完毕,//然后就将后面的都加到新的链表的尾部就行了。 /** * Definition for singly-linked list. * struct ListNode { *

2021-04-16 16:22:00 17

原创 题目 1114: C语言考试练习题_排列(DFS)

有4个互不相同的数字,输出由其中三个不重复数字组成的排列。思路:我们用DFS来实现的时候注意,第一个参数表示的是起始下标,第二个参数表示的是要跳过的下标。#include<bits/stdc++.h>using namespace std;bool vis[10]={0};int a[10],b[10];void dfs(int cur,int pos){ if(cur == 4){ for(int i=1;i<=3;i++){//将存在b数组里面的一组数给输出

2021-04-11 14:24:16 25

原创 第三届传智杯全国大学生IT技能大赛(决赛)B组--详细题解

思路:乱搞就行,就是统计同时存在两个数组里面的元素的个数。#include<bits/stdc++.h>#define maxn 33using namespace std;int a[maxn],b[maxn];int vis[maxn]={0};int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; vis[a[i]]++; } for(int.

2021-03-29 10:12:26 90

原创 算法3-7:银行排队

题意:就是多个窗口服务,每次来的人选择一个等待时间最短的窗口。问所有人的平均等待时间思路:拿到这题有没有感觉像一个队列。就是先进队的先服务,然后完事了才能挨到下一个,否则就在外面排队等待。只不过这里是多个队列。因为我们有多个窗口。那么我们其实可以用一个一位数组来记录每个窗口服务最后的那个时间节点。那么每次一个顾客来了,让他先选择一个等待时间最短的那个窗口。然后就是判断顾客是需要等待还是当前窗口根本就没人。要等待的话我们就是sum加上等待时间。然后更新这个窗口的时间节点。否则我们就直接更新当前窗口服务节.

2021-03-20 22:30:44 362

农作物病害识别.zip

有关农作物各种病害的数据集,用于训练农作物病害识别模型。帮助农夫更好的种植。

2021-05-03

空空如也

空空如也

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

TA关注的人 TA的粉丝

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