自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缩放点积注意力机制简单理解

摘要:注意力机制通过计算查询与键的相似度来分配值权重,聚焦关键信息。Scaled Dot-Product Attention是该机制的核心实现,包含点积计算、缩放和softmax加权三个步骤,其中缩放因子1/√dk避免了高维时softmax梯度消失问题。相比无缩放的点积注意力和加性注意力,该方法在效率和稳定性上更具优势。实际应用中,矩阵化并行计算显著提升处理效率,使其成为Transformer等模型的关键组件。类比侦探查案,注意力机制能自动筛选高相关线索进行重点调查,避免无效信息干扰。

2025-07-19 03:09:05 429

原创 线性回归 梯度下降

【代码】线性回归 梯度下降。

2025-03-08 21:37:47 135 1

原创 7-4 BCD解密分数 10

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

2025-01-16 19:28:58 349

原创 牛顿迭代法求方程的根

求f(x)=2*x*x*x-4*x*x+3*x-6=0 ,在1.5附近的根。思想:利用一阶Taylor 即切线方程的根来不断迭代,逼近方程的根。迭代公式 xn+1=xn - f(xn)/f'(xn)

2025-01-13 22:29:42 356

原创 成绩排序 升序 降序

注意一个case里面有多组样例,请用循环处理输入 输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩。解题思路: 创建学生结构体数组,对学生成绩冒泡排序,冒泡排序具有稳定性。按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开。都按先录入排列在前的规则处理。

2025-01-12 21:46:03 487 2

原创 完数和盈数

输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。若因子之和大于该数,则称其为“盈数”。求出2到60之间所有“完数”和“盈数”。解题思路:判断是否为因子,若为因子则加和,和为自己则存储完数数组,否则存储盈数数组。按题目要求进行输出即可。

2025-01-12 20:49:00 281 2

原创 九键手机键盘

按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。用哈希表存储字符所需时间,若相邻字符再一个按钮上则time+2 ,怎么判断相邻两个字符在一个键盘上?输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间。

2025-01-12 19:47:03 323 2

原创 冒泡排序 递归 非递归实现

非递归实现 通过 双循环实现 ,一次冒泡,将一个最大值冒到最终位置,经过(序列长度为 n)n-1次冒泡后实现序列递增/减有序。通过反复交换相邻两个元素的位置,使得每一轮循环都能将未排序的部分中的最大元素移动到数组的末尾。因为越小的元素会经由交换像是气泡一样慢慢浮到数组的顶端,所以叫做冒泡排序。冒泡排序是一种最基础的。

2025-01-11 19:05:47 266 2

原创 C实现进制转换 m 进制转为n进制(简洁易懂)

注意:要转换的进制数可能含有字符,需先将输入的字符串转换为一个10进制的数,再将这个10进制数转化为N进制数,注意字符与数字之间的转换关系。下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。还有转为10进制后可能用int 类型存储不下,改为用long 类型存储。输入的第一行包括两个整数:M和N(2

2025-01-07 21:54:09 401 2

原创 二叉树遍历 给先序 输出中序 后序

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。根据给出的先序序列 递归构建二叉树,再中序递归二叉树,也中序非递归二叉树。输入包括1行字符串,长度不超过100。

2025-01-07 19:15:36 440 3

原创 利用大数除法进行进制转换

一轮循环长度是由被除数长度决定的,156 长度3,则这轮循环三次,第二轮被除数为上轮商数组去前导0后的数组,上轮商数组 0 7 8 ,去完前导0后。156 拆分 1 5 6 先1除2 商0 余1 ,余数*10+5=15,15除2 商7 余1 1*10+6=16;16除2 商 8 余0,我们将大数以字符串的形式输入,然后再转化为数字,首先以字符串的形式输入两个大数,然后分别得出两个大数的位数,最后再利用。一轮 被除数 循环除2 取余,最后的余数为这轮二进制数,商去完前导0后进行下一轮 循环除2取余。

2025-01-06 22:06:15 788

原创 堆栈的使用

而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A';如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。并对所有的'A'操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E'。若scanf("\n%c",&M);改为scanf("%c",&M);

2025-01-05 20:34:36 455 1

原创 搬水果(哈夫曼树思想)

在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力耗费值。可以先将 1,2 堆合并,新堆数目为3,耗费体力为 3。第二行包含 n 个整数,用空格分隔,第 i 个整数(1<=ai<=1000)是第 i 种水果的数目。

2025-01-04 23:07:49 296

原创 排列与二进制

从n个不同元素中取出m(m<=n)个元素的所有排列的个数,叫做从n中取m的排列数,记为p(n, m)。具体计算方法为p(n, m)=n(n-1)(n-2)……(n-m+1)= n!=1).当n和m不是很小时,这个排列数是比较大的数值,比如 p(10,5)=30240。每行两个整数,n和m,0<m<=n<=10000,n=0标志输入结束,该组数据不用处理。//例10 可连续整除2一次变为5,不可被2整除,则10的二进制后面有一个连续的0,10的二进制为 1010。//9 可连续整除2,0次, 1001。

2025-01-04 16:49:37 434

原创 判断连通图

每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。即开始为n(顶点数)个独立集合,随着输入m(边数)组顶点,将不同集合合并为一个集合,若判断m组边都为一个集合即为连通图。对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。

2025-01-04 15:05:25 198

原创 怪异的洗牌

在本题目中,还引入另外一种洗牌方式,就是把前一半(如果总数是奇数,就是(n-1)/2)牌翻转过来,这种操作称之为翻转(flip)。当然,如果是实际的扑克牌,直接翻转会造成正反面混在一起的,我们就不管那么多了。给定n张牌,初始次序为从1到n,经过若干次的shift和flip操作后,结果会是什么样?n表示牌的数目,1<n<1000,k表示下面要进行的操作数量。随后的k行,每行一个整数x,1<=x<=n,表示从第几个位置开始移位。对于输入的每组数据,计算经过给定的k次shift和flip操作后,各个位置的数值。

2025-01-03 20:22:18 331

原创 三角形的边

EOF"后该程序就不是死循环了,如果在终端不进行输入该程序会自动结束(while的意思就是说当当前输入缓存还有东西时就一直读取,直到输入缓存中的内容为空时停止)。要注意的是:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用<Ctrl + z>组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.C语言中,EOF常被作为文件结束的标志。此题无需排序,只需找出a,b,c中最大值max即可,再用a+b+c-2*max,即为差值;

2025-01-03 18:05:52 327

原创 字符串反码

一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;如果是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。举几个例子,'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'$'的反码还是'$'。一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字符串的反码。

2025-01-03 16:23:20 332

原创 十进制整数反码

【代码】十进制整数反码。

2025-01-03 15:42:45 156

空空如也

空空如也

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

TA关注的人

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