- 博客(42)
- 收藏
- 关注
原创 Day 1 二分算法(C++)
二分查找(Binary Search)是一种常见的查找算法,它适用于已经排序好的数组或列表。它的基本思想是不断地将待查找区间分成两半,并通过比较目标值与中间元素的大小关系来确定目标值在哪一半中,从而缩小查找范围。这个过程一直重复,直到找到目标值或者确定目标值不存在为止。有序无重复初始化左右边界,通常为数组的起始和结束索引。在循环中,计算中间位置索引,以及中间位置的值。根据中间位置的值与目标值的大小关系,缩小搜索范围:如果中间值等于目标值,则找到了目标值,返回结果。
2024-03-24 00:04:26
924
原创 Anaconda常用指令
Python是现今较为流行的一门编程语言,解释性强,语法灵活,而且具有强大的函数库,这些函数全部都被封装成一个个的模块(Module),也称作包,所以我们在使用的时候需要进行导入(import),但是所有的包全部安装在一个环节里面,就可能会出现一些莫名其妙的错误,而且也不方便我们对环境的管理,再者,我们在编程时需要用到不同的Python版本,这就要求我们进行版本的切换。在进行包管理的时候,部分指令的conda可以替换为pip,自行尝试哈。:后面是大写V,小写v好像是会进行python代码编译。
2023-08-22 15:08:44
309
原创 机器学习--课后作业--hw1
题目要求:利用每天的前9个小时的18个特征(包括PM2.5),来预测第10个小时的PM2.5的值。特征包括: AMB_TEMP, CH4, CO, NHMC, NO, NO2, NOx, O3, PM10, PM2.5, RAINFALL, RH, SO2, THC, WD_HR, WIND_DIREC, WIND_SPEED, WS_HR,总计18种。每一种都可以作为一个变量加入你的模型里面。数据下载Github链接下载结束以后把文件放入对应的文件夹里面就好了。
2023-07-31 01:21:19
457
原创 机器学习-Gradient Descent
按照正常的理解,梯度越大,说明可能离最低点越远,那么我们变化的步伐也应该越大,梯度越小,说明可能离最低点越远,那么我们变化的步伐也应该越小,但是在Adagrad算法里面,当梯度越大的时候,步伐应该越大,但下面分母又导致当梯度越大的时候,步伐会越小,前后有点矛盾了。存在多个变量的时候,很可能出现的一种情况就是,他们的取值范围不一样,一个可以很大,一个可以很小,那么我们在对他们的对应参数进行相同变化的时候,而y的变化的情况却大不相同。多项式的阶次越高,多项式中的项越多,逼近函数的实际值越近。
2023-07-30 17:06:46
642
原创 机器学习-Basic Concept
当模型具有较高的方差时,它对于训练数据中的噪声和随机性非常敏感,从而导致在不同的训练集上表现差异较大。当模型具有较高的偏差时,它倾向于对问题进行过于简单的建模,从而忽略数据中的一些复杂特征或模式。噪声指的是数据中的随机性和不可预测性,它来源于许多现实世界的因素,比如测量误差、数据收集的不完美等。在模型优化过程中,通常通过调整模型的复杂度(例如,增加或减少特征、调整模型的深度和宽度等)来平衡偏差和方差。它帮助我们检验模型在未见过的数据上的表现,并提供比单一训练集和测试集划分更可靠的性能评估。
2023-07-29 00:57:57
436
转载 pytorch入门
在进行深度学习的过程中,我们会使用到一个框架,现阶段主流的框架是pytorch和tensorflow,近些年来,pytorch的热度逐渐超过tensorflow,它具有很强的普适性,而功能也极其强大。本文大部分都是参考这位大佬(写Bug那些事)的文章(狂肝两万字带你用pytorch搞深度学习!!!
2023-07-27 21:27:13
227
1
原创 Pytorch参数优化
当我们训练神经网络时,我们需要调整模型的参数,使得损失函数的值逐渐减小,从而优化模型。但是模型的参数我们一般是无法看见的,所以我们必须学会对参数的更新,下面,我将介绍两种参数更新的方法。
2023-07-26 19:28:09
634
原创 Pychram常用快捷键
快捷键功能Ctrl + P函数参数提醒Ctrl + Q进入当前函数的说明界面Shift + Enter新建一行并进行跳转Ctrl + /代码注释Alt + Enter代码提示
2023-07-26 14:23:31
79
原创 梯度下降算法
在梯度下降算法中,我们通过计算目标函数关于模型参数的梯度(导数),得到了当前位置在目标函数曲面上的斜率方向。输入数据在经过正向传播以后,输出遇计算预估值,而计算估计值与实际值之间的误差一般较大,将误差从输出层向隐藏层反向传播,直至传播到输入层,在传播的过程中,根据误差调整各种参数的值,然后不断进行迭代,直到误差到达理想状态,趋向于收敛。更新参数:使用学习率(learning rate)乘以梯度,并将结果加到当前参数向量上,从而更新参数。梯度下降算法中的一个超参数,用于控制每次参数更新的步长。
2023-07-25 22:10:27
118
原创 数据结构课程设计--旅游区景点导游系统
分享了一下我大二自己写的数据结构的课程设计,花费了很多时间,下面题目的基本功能都实现了,代码里面也给出了详细的注解,类似的管理系统都可以参照这份代码,希望可以帮到你,刚开始是想弄个收费的,但是还是无私和大家分享吧,帮到各位也很开心,加油吧,代码要是有不理解的可以评论或者私信我。将文件中的数据读入内存,建立图的存储结构,可以选择邻接表或邻接矩阵作为存储结构,存储结构要准确记录旅游区各旅游景点及其相邻景点之间的相关信息。一定要将文件中的数据格式描述清楚,可以对文件中的数据进行截图后解释。
2023-07-19 21:46:15
3676
11
原创 Markdown快速入门
Markdown是一种轻量级标记语言,让人们使用易读易写的纯文本格式编写文档,代码量少,格式多样,而且具有很好的可塑性,可以嵌入html语句进行显示,同时也可以很便捷的实现多种格式的转换。文件后缀:.md编辑器:Markdown在多个平台上面都可实现在线编写文档,在github上面各种项目里面,一般都会有一个.md后缀的文件,这个主要用于开发人员对自己的项目进行简介,帮助学习的人更好的进行理解。如果感兴趣,推荐去学习一下vim本篇文章就是使用Markdown进行编写。
2023-07-19 20:39:04
157
原创 STL基础(一)
一.快速排序#include<iostream>#include<algorithm>//排序函数全部包含在这个头文件里面using namespace std;int main(){ int n,a[100],i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n);//从小到大 for(i=0;i<n;i++) printf("%4d",a[i
2022-04-10 23:28:05
745
原创 布尔(bool)类型
我查了一下网上的资料,有的说布尔类型是C++特有的一种新类型,但是我似乎在C语言里面看见过,不太理解C语言:我们在进行判事件是否进行时,返回值是int类型,有两种,0和!0,0表示正确,可以进行,!0表示错误,不可进行C++:在判断时 多了 一种就是布尔类型的函数,返回值时布尔类型,有两种,true和false,然后具体就不需要说了,和C语言里面的差不多了下面各一个判断大小的布尔类型的示例吧...
2022-02-26 19:33:37
731
原创 迭代器iterator简介
作用:迭代器是stl里面的一个小组件,主要作用是遍历容器,有的容器可以直接进行运用,比如vector,可以像使用数组一样使用它,但是有的容器,比如set,我们必须通过一个媒介进行运用,这就是迭代器,它和C语言里面的指针比较相似,大致使用方法可以类比//迭代器的定义容器类型<数据类型>::iterator 迭代器名称=容器名称.begin();//从容器的第一个元素进行遍历 //迭代器的遍历*迭代器名称;//迭代器其实有一点点像地址,我们需要对迭代器进行加减运算从而到达我们需要.
2022-02-26 14:56:44
450
原创 指针的运用
一,指针的概念指针其实就是储存地址的一个位置,和我们定义的普通的常量取储存数据一样,二者只是储存的内容不相同,所以在使用指针的时候需要注意我们储存的具体内容,还有就是指针可以储存指针的地址,这就是双指针,就比较麻烦了。二,指针的定义指针指向的类型 *指针名int *p;//指针叫做p,它是一个指向整型数据的指针,存放的也是整型数据的地址//下面两个由于符号的优先级产生了不同的效果,[]都好的优先级高于*,所以优先进行结合int *p[3];//指针叫做p数组,它是一个指向整型.
2022-01-05 23:34:46
1125
原创 数组指针和指针数组
数组指针:专门用来表示二维数组的,他有着固定的输出规则,在输出时我们必须进行严格的控制#include<stdio.h>int main(){ int (*p)[10],a[10][10]={{1,2,3},{4,5,6},{7,8,9}}; p=a; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%4d",*(*(p+i)+j)); printf("\n"); } return 0;}.
2022-01-05 23:04:20
496
原创 奇数阶幻方问题
输入:3#include<stdio.h>#include<string.h>int main(){ int n; scanf("%d",&n); int a[100][100];//对应a[x][y] memset(a,0,sizeof(a));//清零 a[0][n/2]=1;//先把1赋值给第一行中间的数 a[n-1][n/2+1]=2;//寻找他右上方的位置,很明显,他的x超出了,所以直接变道最后一行 int x=n-1; int...
2021-12-31 19:29:42
521
原创 排序方法小结:冒泡排序,选择排序,插入排序,
一,冒泡排序冒泡排序的原理:进行n-1次循环,每一次循环把相邻两个最大的数向后移,最后会使得最大的数不断被移至最后一个,但是每一次循环以后循环内部的最后一个都在向前移一个1,这样就会变得有序#include<stdio.h>void mpsort(int *p,int n);int main(){ int a[100]; int n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]);.
2021-12-29 23:24:05
494
原创 数据的交换-不引入中间变量
#include<stdio.h>int main(){ int a=2,b=3; a=a+b; b=a-b; a=a-b; printf("a=%d b=%d\n",a,b); return 0; }
2021-12-21 16:51:05
84
原创 辗转相除法,递归求解最大公约数和最小公倍数
最大公约数#include<stdio.h>int gcd(int,int);int main(){ int m,n; scanf("%d %d",&m,&n); printf("%d\n",gcd(m,n)); return 0; } int gcd(int m,int n){ int c; while(n) { c=m%n; m=n; n=c; } return m;}设计辗转相除法函数求解#includ...
2021-12-20 23:46:31
749
原创 结构体的简单运用--简易学生信息管理系统
以下是一个简单的结构体,结构体,我们需要了解他的用法,他的最大特点就是,可以多种数据集合在一起,然后直接整个结构体直接进行数据的赋值,这相较于普通的数据交换,这个提供了很大的便利#include<stdio.h>#include<string.h>#define N 3struct student{ char no[20]; char name[8]; float a[4];};void input(struct student s[.
2021-12-20 23:32:28
170
原创 递归思想求最大值
其实递归本身将比较难,那种反复循环的思维方式很难理解清楚,所以我在平常的一些习题中会尽力避开用递归解题,其实C语言后面学深了,还是递归非常重要,毕竟C语言的本质就是让计算机反复做同一件事,即循环,所以递归还是特别重要的。这次是我在C语言七米考试里面碰到的一道编程题目,很简单的一道题目,但是用上递归以后就很难,我思考了很久,看来不少代码,最后选择了一个我认为可以理解的方法/*这个题目很不好想,他是在不断缩小查找的范围*/#include<stdio.h>int max(in..
2021-12-20 11:59:58
2255
原创 VJ-Cube painting(骰子涂色问题)
思路:这个题目其实很简单,但是不太好实现这题目的一个关键就是三种颜色,所以我们需要考虑三组对立面,任意三个相邻的面颜色确定,那么他们的对立面夜色也会随之确定(字丑,别喷)这是我的一个理解,感觉这种方式应该会稍微好理解一些输入:rbgggrrggbgrrrrbbbrrbbbrrbgrbgrrrrrg注意:vj提交的代码不能有注解哦#include<stdio.h>#include<string.h>int m...
2021-11-27 00:20:35
545
原创 矩阵A乘以B
上面的矩阵相乘的定义可以看一下#include<stdio.h>#include<string.h>int main(){ int Ra,Ca,Rb,Cb; int i,j,k; int a[105][105],b[105][105]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); scanf("%d %d",&Ra,&Ca);//第一个方阵的输入 for(i=0;i<Ra;i...
2021-11-16 18:52:43
1359
原创 对方阵做统计处理
思路:根据下面的提示,我们可以推理出,如果n为奇数,那么中间会多加一个,如果为偶数,那就没有影响矩阵的转置需要注意一下二维数组中的一些字符#include<stdio.h>int main(){ int n; int a[35][35],b[35][35]; int i,j,s1=0,s2=1; scanf("%d",&n); for(i=0;i<n;i++)//先全部输入,再进行其他的运算 for(j=0;j<n;j++) scanf(...
2021-11-16 18:42:49
970
1
原创 求n以内最大的k个素数以及它们的和
#include<stdio.h>#include<math.h>int main(){ int m,n,i,j,k=0,a[1005],sum=0; scanf("%d %d",&m,&n); for(i=m;i>1;i--) { for(j=2;j<=sqrt(i);j++)//判断素数 if(i%j==0)break; if(j>sqrt(i)) { a[k]=i;//数组进行储存得出的素数 if(...
2021-11-16 09:59:40
4334
1
原创 UVA KICKDOWN
这个题第一眼看着很难,一般来说,我直接被我题目给吓到了,但是我看了看别人的题意,好家伙,如此简单,但是本题思路不太好想题意:两块木板,带有锯齿,然后我们现在把它装入一个容器(看成平面图形),容器的宽度为3,说简单一点就是锯齿和锯齿不能待一块,然后让你求这个容器的最小高度思路:思路是别人的,我总结了一下,先固定一个板子,另外一个再缓慢移动,直到没有碰见齿轮和齿轮相碰,注意,要用两次哦,取最小的就好了,具体实现请看下方代码区域的注解#include<stdio.h>//两...
2021-11-15 20:58:00
241
原创 矩阵转置输出
输入样例3 21 23 45 6#include<stdio.h>int main(){ int m,n; int a[15][15]={0};//二维数组 int i,j; scanf("%d %d",&m,&n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]);//先全部输入再进行其他操作 for(i=0;i<m;i++) { for(j=0...
2021-11-15 09:47:44
948
原创 组个最小数
#include<stdio.h>int main(){ int a[10]={0},i,j; for(i=0;i<10;i++) scanf("%d",&a[i]);//先把每个数的个数进行统计并保存 for(i=1;i<10;i++)//i从1开始,首位不等于0 if(a[i]!=0) { printf("%d",i); a[i]--; break; } for(i=0;i<10;i++)//这个不太好想,第一位确定了以后,直接...
2021-11-13 16:18:02
231
原创 数组元素循环右移问题
这个题要认真读题目,而且这个题有一定的瑕疵,就是如果m>n这个情况#include<stdio.h>int main(){ int n,m,a[100000]={0},i; scanf("%d %d",&n,&m); m=m%n;//这个很重要 for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=n-1;i>=0;i--)//全部元素右移m个位置 a[i+m]=a[i]; for(i=n;i...
2021-11-13 15:47:38
251
原创 n个数字都不相同的年份
#include<stdio.h>int bt(int n)//自定义函数尽量少用,除非在后面你要多次用到这个函数{ int k=0,i,a=0,b=0,c=0,d=0,s[10]={0}; a=n%10;s[a]++; b=n/10%10;s[b]++; c=n/100%10;s[c]++; d=n/1000;s[d]++; //这个统计出现了几个不同数字的方法和前面点赞较为相似 //然后看看我的憨憨做法 /* if(a!=b&&am...
2021-11-13 13:58:35
539
原创 2021-11-13
#include<stdio.h>int main(){ int n,m,i,j,t,z; int a[1005]={0};//数组开大一点统计各数字出现的次数 scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); for(j=0;j<m;j++) { scanf("%d",&z); a[z]++; } } int max=0; /*这个还有一个其他的思...
2021-11-13 12:29:29
62
原创 判断题的评判
#include<stdio.h>int main(){ int n,a[2][105],i,j; double k=0,z; scanf("%d",&n); for(i=0;i<2;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(j=0;j<n;j++) if(a[0][j]==a[1][j])k++; z=k/(n*1.0)*100; printf("%.2lf%%\n",z);...
2021-11-13 11:54:10
458
原创 心情查询输出
#include<stdio.h>int main(){ int a[24],n,i; for(i=0;i<24;i++)//储存每个时间的心情指数 scanf("%d",&a[i]); scanf("%d",&n);//先输入一个时间为了后面循环的进行 while(0<=n&&n<=23)//判断,如果不满足则进不了循环 { if(a[n]>50)printf("%d Yes\n",a[n]); else p...
2021-11-12 20:20:33
336
原创 奇偶数分开排序
#include<stdio.h>int main(){ int n,m,i,j=0,k=0,t,b[55],c[55],o,p,q,max,s=0; scanf("%d",&n); for(i=0;i<n;i++)//把输入的数据按照奇数和偶数进行分类,分别存入不同的数组 { scanf("%d",&m); if(m%2==1){b[j]=m;j++;} else {c[k]=m;k++;} } for(p=1;p<=j-1;p++...
2021-11-12 19:57:57
714
2
原创 选择排序输出
//这个题说简单一点就是多次进行取最大值,然后每次把最大值移动到最后面,然后没运行一次以后最后面的就增加一个不动的#include<stdio.h>int main(){ int n,a[105],i,j,k,max=0,o,t; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(j=1;j<=n-1;j++)//这j的取值范围要注意,多体会一下,题目描述一共循环n-1次 {...
2021-11-12 19:29:57
424
原创 杨辉三角的输出
//仔细观察你会发现杨辉三角其实是一个排列组合即Cij=i!/(j!*(j-i)!)#include<stdio.h>int main(){double n,i,j,k,a,b,c;scanf( "%lf",&n);for(i=0;i<n;i++){for(j=0;j<=i;j++){a=1;b=1;c=1;for(k=1;k<=i;k++)a*=k;for(k=1;k<=j;k++)b*=k;for(k=1;k<=(i-j)...
2021-11-12 18:20:23
195
2
原创 在有序数组中插入一个数
这个题目相对来说还是比较简单的,有不同的思路,我只写了一种,其他可以再去查一下#include<stdio.h>int main(){ int n,a[105],x,i,t; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); for(i=0;i<n;i++) if(a[i]>x) break;//找到那个比他大的数就退出 t=i;//...
2021-11-12 17:58:58
1946
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人