自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PREV-144 卡片换位【第七届】【省赛】【C组】——bfs问题

你玩过华容道的游戏吗?这是个类似的,但更简单的游戏。看下面 3 x 2 的格子±–±--±–+| A | * | * |±–±--±–+| B | | * |±–±--±–+在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵。还有一个格子是空着的。你可以把一张牌移动到相邻的空格中去(对角不算相邻)。游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。输入格式输入两行6个字符表示当前的局面输出格式一个整数,表示最少多少步,才能把AB换位(其它牌位置随意)输入样例

2022-03-07 21:27:46 3882

原创 “蓝桥杯”练习系统——ALGO-847 盾神与简单数独

问题描述有一天,盾神接触到了风靡世界的小游戏——数独!!!盾神非常感兴趣,不惜翘课用了一天的时间把数独玩得出神入化!!!于是他要过来考考你。听到你“雅蠛蝶”的叫声,盾神心软了,于是把经典的99的棋盘缩小到44的。输入格式输入为4*4的矩阵,如果第i行第j列为0,则该格子未填数;否则该格子已经有数。规则和原来一样,只是要填的数变成从1到4。于是你会做了。输出格式输出为若干个4*4的矩阵,表示所有方案,按字典序升序排列。在最后新起一行输出#表示输出结束。方案之间,方案与#之间空一行。矩阵大小关系的定

2022-03-06 00:39:29 1201 1

转载 Transformer

Sequence to Sequence输入是一个序列,输出是一个序列。输出序列的长度取决你的模型。对应的,其可以应用在语音识别、机器翻译和语音翻译等场景。Is it a sequence?如上图可知,我们可以看到模型输入的是 deep learning is very powerful。在处理时,deep 与 learning组合起来是一个名词,very 与 powerful组合起来是一个形容词,而 is 与 very powerful 组合起来是一个动词。最后将 deep learni

2021-09-14 21:49:20 258

转载 Self-attention

Vector Set as Input1、文字处理在文字处理时,我们所输入的Input是一个长度不定的句子,我们将这个句子中的每一个出现的词汇描绘成一个vector,这样就将一个句子中出现的词汇转变为了一个vector set作为Input。Self-AttentionSelf-Attention的运作方式就是:Self-Attention会利用一整个Sequence的资讯,然后你Input几个Vector,它就输出几个Vector,比如说你这边Input一个深蓝色的Vector,这边就给你一个

2021-09-13 22:04:57 162

转载 Task05:反向传播

一、背景梯度下降给到θθ\thetaθθθ(weight and bias)先选择一个初始的θ0\theta^0θ0,计算θ0\theta^0θ0的损失函数(Loss Function)设一个参数的偏微分。计算完这个向量(vector)偏微分,然后就可以去更新的你θ0\theta^0θ0百万级别的参数(millions of parameters)。反向传播(Backpropagation)是一个比较有效率的算法,让你计算梯度(Gradient)的向量(Vector)时,可以有效率的计算出来。

2021-08-25 21:03:22 85

转载 Task04:深度学习简介

一、深度学习的三个步骤我们都知道机器学习有三个step,对于deep learning其实也是3个步骤:Step1:神经网络(Neural network)Step2:模型评估(Goodness of function)Step3:选择最优函数(Pick best function)二、神经网络神经网络(Neural network)里面的节点,类似我们的神经元。神经网络也可以有很多不同的连接方式,这样就会产生不同的结构(structure)。在这个神经网络里面,我们有很多逻辑回归函数

2021-08-23 14:33:48 154

转载 Task04:logistic回归

一、逻辑回归的函数集上一篇讲到分类问题的解决方法,推导出函数集的形式为:将函数集可视化:这种函数集的分类问题叫做Logistic Regression(逻辑回归)。二、定义损失函数如下图所示,每个对象分别对应属于哪个类型(例如x3x^3x3属于C2C_2C2​ )。假设这些数据都是由后验概率fw,b(x)=Pw,b(C1∣x)\mathrm{f}_{\mathrm{w}}, \mathrm{b}(\mathrm{x})=\mathrm{P}_{\mathrm{w}, \mathrm{b}}\l

2021-08-23 03:31:20 221

转载 Task04:概率分类模型

一、分类概念分类要找一个function函数,输入对象x的特征,输出为该对象在n个类别中的哪一个类别里。例子1:信用评分【二分类问题】输入:收入,储蓄,行业,年龄,信用指数……输出:是否给予贷款例子2:医疗诊断【多分类问题】输入:当前症状,年龄,性别,既往病史……输出:患了哪种疾病二、回归模型 VS 概率模型1、回归模型在解决分类问题时,假设还不了解怎么做,但之前已经学过了 regression。就把分类当作回归硬解。 举一个二分类的例子,假设所分类对象的特征 x,

2021-08-22 16:22:42 249

转载 Task03:梯度下降

一、梯度下降法在回归问题的第三步中,需要解决下面的最优化问题:                           θ∗=arg⁡min⁡Lθ(θ)\theta^{*}=\underset{\theta}{\arg \min L}(\th

2021-08-21 00:05:03 144

转载 Task03:误差从哪里来?

一、误差来源误差Error来源于两个部分,一个是Bias(偏差),另一个是Variance(方差)。Error:反映的是整个模型的准确度。Bias:反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度。Variance:反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。假设真实的模型为f^\hat{f}f^​,我们通过收集数据,根据回归中的三步骤训练得到我们的理想模型f∗f^*f∗,f∗f^*f∗就是f^\hat{f}f^​的一个预估。整个过程就像是在打靶,f^\h

2021-08-20 23:05:08 126

转载 Task02:回归

一、定义Regression就是找到一个函数function,通过输入特征x,得到一个返回值。二、应用房价预测输入:根据房屋面积,地理位置等输出:预测房屋的价格股市的预测:输入:过去10年股票的变动,新闻咨询,公司并购咨询等输出:预测股市的明天的平均值三、步骤1、模型假设(线性模型)一元线性模型一元线性模型针对于单个输入特征的情况。以一个特征Xcp为例,此线性模型假设为:y=b+wx\mathrm{y}=\mathrm{b}+ \mathrm{w} \mathrm{x

2021-08-18 23:06:09 68

原创 Task01:初识机器学习

机器学习介绍机器学习,即让机器具有学习的能力。运用机器学习的手段,达到我们未来想要的人工智慧。而深度学习则是机器学习中的一个方法。机器学习目的学习机器学习,其实就是让机器能够自主学习。当我们编写一段代码之后,机器人能够有学习的能力,接下来完善程序使机器能够有自主学习的能力。例如,如果你希望他学会怎么做影像辨识,你只是需要下告诉它:看到这张图片,你要说这是猴子;看到这张图片,然后说是猫;看到这张图片,可以说是狗。它具有影像辨识的能力,接下来看到它之前没有看过的猫,希望它可以认识。机器学习所做的事情,可

2021-08-16 15:49:12 136

原创 习题11-7 奇数值结点链表&&习题11-8 单链表结点删除

题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist()从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入

2021-03-15 18:17:51 676

原创 每日练习:函数题6-3 6-4与8-8

习题6-3 使用函数输出指定范围内的完数题目简介本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数代码int factorsum(int number){ int sum = 1; int i = 2; if(number!=1) { for (i = 2; i <= sqrt(num

2021-03-09 20:19:08 508

原创 138. 复制带随机指针的链表

过程:1、代码实现:/** * Definition for a Node. * struct Node { * int val; * struct Node *next; * struct Node *random; * }; */typedef struct Node Node;struct Node* copyRandomList(struct Node* head) { if(head == NULL) { retur

2021-02-28 21:35:10 72

原创 牛客网:编程题-删除链表中重复的结点

题目要求:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思想过程:其实这道题目的思想过程并不复杂,但是它的一些特殊情况你需要考虑周全。不论对于哪些情况,总的循环就是进行的判断条件的next不为空。在每次判断结束时,判断此时的next是否为空,若不为空,则next = cur->next;若为空,则结束总循环,返回此时的p

2021-02-25 11:27:14 129

原创 147. 对链表进行插入排序

在力扣网上,对于这道题目给出的动图的排序方式,是冒泡排序,针对数组进行排序。而对于单链表来说,这个冒泡排序就不适用。思想其实这道题目最核心的精髓是你如何进行头插,中间插入,尾插,假如你会这三个步骤,那么这道题目就会迎刃而解。对于这一个数组来讲全程循环结束条件为cur指针为空时,结束循环。当其不为空时,进行循环1、我们先取出头结点作为另一个链表的头,即2、对以cur为头结点的链表,将其所含的结点一个一个插入到以sorthead为头结点的链表中。(1)、头插此时cur->val的值要小

2021-02-24 11:07:34 69

原创 142. 环形链表 II

题目要求:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。思想:代码实现:第一种方法:这种方法在力扣网上运行会报出超时的错误,我检查了一下,代码没有什么问题,可能本身代码运行时耗时吧。if(head==NULL) {

2021-02-23 23:39:50 152

原创 160. 相交链表

思想:这道题目其实思想上很简单,就是让两个链表保持在同一起跑线上,一起往后遍历,最终找到两者指向地址相同的结点,这就是公共结点。详情请看以下代码,分为三个步骤。代码实现:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListN

2021-02-21 12:46:25 1076 3

原创 牛客网:[编程题]链表分割

题目要求:现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。过程:解这道题目,最重要的是建立两个链表,将小于x的结构体放到一个链表lesshead,大于x的结构体放到另一个链表greaterhead。最后将两个链表进行合并。最后切记,一定要将greatertail->next置为空,保证不会出现以下情况:代码实现:/*struct ListNode { int

2021-02-21 11:44:04 123

原创 牛客网:[编程题]回文链表

题目要求:现给定一个链表ListNode* pHead,定义bool代表链表是否为回文,请编写程序。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false思想:本题的思路分为三步走:找寻中间位置->将链表分为两部分,对后一部分进行翻转->进行指针指向数据的比较。1、找寻中间位置找寻中间位置,还是运用快慢指针的思想,(具体细节参考我的之前有一篇博客快慢指针的两道题目,里面有详细的讲解)。在对于单链表的操作之中,快慢指针的思想能够帮助我们解决绝大

2021-02-20 11:57:03 124

原创 203. 移除链表元素

题目要求:删除链表中等于给定值 val 的所有节点。过程实现:初始化时,cur指向head,prev置为空。在全程循环过程中,循环进行是cur不为空。要考虑三种情况:1.假如头指针指向的元素就是所指定去除的情况,此时就令head指向head->next的位置,即head = head->next;令结构体变量等于此时的head,在往后遍历2.所要去除的元素在链表内的某个位置或者链尾,则定义一个结构体指针prev指向cur指向的前一个位置,就是记录所要去除元素前一个元素的位置,方便进行

2021-02-17 19:10:50 85 1

原创 运用快慢指针思想:876. 链表的中间结点与剑指 Offer 22. 链表中倒数第k个节点

思想:这两道题目都运用了快慢指针的思想,即是定义两个结构体指针fast与slow。slow是一步一步走,fast走的步数按照题目所给的设定。使用快慢指针,可以解决一部分题目。快慢指针的思想一定要掌握。876. 链表的中间结点过程分析:寻找中间结点,就让fast指针走两步,slow指针走一步,即fast = fast->next->next,slow = slow->next;具体细节看如下图解:代码实现:struct ListNode* middleNode(struct

2021-02-17 13:46:44 76

原创 21. 合并两个有序链表

题目要求:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。过程:第一步:比较两个链表的头指针对应的数据大小,将数值较小的头指针指向的地址赋值给结构体变量head和tail,同时头指针指向其指向的下一个地址。第二步:代码实现:struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ struct ListNode* head = NULL; s

2021-02-16 21:30:07 58

原创 989. 数组形式的整数加法

题目要求:对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例3:输入:A = [2,1,5],

2021-02-14 12:37:33 191 1

原创 27. 移除元素

题目要求:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝

2021-02-12 19:09:56 196 1

原创 剑指 Offer 56 - I. 数组中数字出现的次数

题目要求:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000代码实现:/** * Note: The returned array mus

2021-02-12 13:41:29 60 1

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字

题目要求:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8限制:1 <= 数组长度 <= 10000代码实现:int missingNumber(int* nums, int numsSize){ int i = 0; int x

2021-02-12 12:14:50 172

原创 编程题:练习3-4 统计字符

题目要求:本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。输出格式:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出输入样例:aZ &09 Az输出样例:letter = 4, blank = 3, digit = 2, other = 1代码实现:#inclu

2021-02-06 14:26:54 1273 1

原创 编程题:练习3-3 统计学生平均成绩与及格人数

题目要求:本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。输入格式:输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。输出格式:按照以下格式输出:average = 成绩均值count = 及格人数其中平均值精确到小数点后一位。输入样例:577 54 92 73 60输出样例:average = 71.2count = 4代码实现:#include &lt

2021-02-06 13:25:21 5018 1

原创 编程题:习题2-4 求交错序列前N项和

题目要求:本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,结果保留三位小数。输入样例:5输出样例:0.917代码实现:#include <stdio.h>int main(){ int N = 0; int i = 0; int s1 = 1; int s2 = 1; int flag = 1; int count = 0; do

2021-02-06 12:43:42 1362

原创 编程题:练习2-18 求组合数

题目要求:本题要求编写程序,根据公式​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数m和n(m≤n),以空格分隔。输出格式:按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。输入样例:2 7输出样例:result = 21代码实现:#include <stdio.h>#include<st

2021-02-04 14:52:53 673

原创 编程题:练习2-14至2-17

2-13 求N分之一序列前N项和题目要求:本题要求编写程序,计算序列 1 + 1/2 + 1/3 + … 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。输入样例:6输出样例:sum = 2.450000代码实现:#include <stdio.h>double ComputeSum(int N){ int i = 1; double

2021-02-03 15:08:16 295

原创 编程题:练习2-13 求N分之一序列前N项和

题目要求:本题要求编写程序,计算序列 1 + 1/2 + 1/3 + … 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。输入样例:6输入样例:sum = 2.450000代码实现:#include <stdio.h>double ComputeSum(int N){ int i = 1; double s = 0; for (i =

2021-02-03 14:14:06 345

原创 编程题:练习4-3 求给定精度的简单交错序列部分和

题目要求:本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。输入格式:输入在一行中给出一个正实数eps。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。输入样例1:4E-2输出样例1:sum = 0.854457输入样例2:0.02输出样例2:sum = 0.826310代码实现:#include <stdio.h&gt

2021-02-03 13:57:09 260 1

原创 编程题:习题3-5 三角形判断

题目要求:给定平面上任意三个点的坐标(x​1​​,y1 )、(x2​​,y​2)、(x​3,y​3​​),检验它们能否构成三角形。输入格式:输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y​1、x​2、y2、x​3、y​3。输出格式:若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。输入样例1:L = 10.13, A = 3.00输出样例

2021-02-03 13:13:12 1094

原创 编程题:习题4-9 打印菱形图案

题目要求本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * * * * * * 代码实现:int main(){ int n = 0; int above = 0; int i = 0;

2021-02-02 13:35:01 1477

原创 编程题:习题4-6 水仙花数

题目要求水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407代码实现:第一种方法:第一种方法的思想时调用C语言库中的pow函数,但是这个代码在pta练题的软件上,当N的值为7时,系统用会提醒运行超时。#include <stdio.h

2021-02-02 12:51:33 3132

原创 函数题:习题11-6 查找子串

题目要求本题要求实现一个字符串查找的简单函数。函数接口定义:char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。裁判测试程序样例:#include <stdio.h>#define MAXS 30char *search(char *s, char *t);void ReadString( char s[] ); /* 裁判提供,细节不表 */int main()

2021-02-02 10:35:09 916

原创 编程题:练习7-11 字符串逆序

题目要求:输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。题目格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:在一行中输出逆序后的字符串。输入样例:hello world!输出样例:!dlroW olleH代码实现:void reverseList(char* pa,int i){ int left = 0; int right = i - 1; while (left < right) { char tmp = pa[l

2021-02-02 10:08:57 1846

空空如也

空空如也

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

TA关注的人

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