【编程】程序设计
文章平均质量分 75
用c及c++语言写算法与数据结构
Mr.zwX
2019年进入电子科技大学接触计算机(机器学习/深度学习(CV、NLP、GNN)、时空数据挖掘、一点点前后端开发),2022年在电子科技大学实验室科研,2023年在复旦大学NLP组实习,2023年9月至今,在北京大学人工智能研究院科研(模型加速/压缩、隐私计算)...保持努力,anyway,这个平台是我记录一些乱七八糟计算机笔记的地方,供(记性不好的)自己复习,同时也分享给大家。如需联系:请发邮件至wenxuan225@qq.com
展开
-
【C++】判断语句中对变量的合理定义
这里的m要么取2要么取4,所以会出现两条分支。int m = 2;// 分支1 mat G = {mat B = {mat A = {// 分支2 cout原创 2023-04-17 15:05:33 · 466 阅读 · 1 评论 -
【c++高精度运算】
题目简述给出n(n≤50)n(n\le50)n(n≤50),计算sum=1!+2!+3!+...+n!.sum=1!+2!+3!+...+n!.sum=1!+2!+3!+...+n!.题解这道题的数字个数显然会超过longlonglonglonglonglong的20位存储空间(大胆估计不会超过1000位数),所以在c++中写高精度运算代码:#include<iostream>...原创 2020-04-28 23:00:09 · 296 阅读 · 0 评论 -
【水题】luogu_P5709 Apples Prologue
题目luogu_P5709 Apples Prologue题解今天想在洛谷把简单的编程结构题刷掉,但这道题卡了我三次WAWAWA,几个坑记录一下:如果吃每个苹果的时间为0,那么剩余的数量为总苹果数如果得到的剩余值为负数,则直接输出0double=int/intdouble=int/intdouble=int/int的结果是intintint,需要double=double(int)/...原创 2020-04-17 16:03:10 · 309 阅读 · 0 评论 -
【哈希排序】UESTCOJ100 Fly Through
题目简述下面是题目完整描述,看着好像复杂,还加了张这么吓人的图片!让人不自主地为仙女们感到担忧 ,其实关键信息就一排文字…输入一个长度为N的数组,输入M组测试数据,输出每一组测试数据不大于该数组中的多少个数字?TimeLimit:1000ms.Time Limit:1000ms.TimeLimit:1000ms.题目链接UESTCOJ100 Fly Through题解我直接用遍历...原创 2020-04-03 13:14:41 · 480 阅读 · 0 评论 -
【分治算法】快速排序算法(划分交换排序)
思路用一个基准数对数组进行分隔,比它大的扔右边,小的扔左边去,递归运算…静下来看快排还是很好理解的,随机取出一个数,将这个位置的数与最左端的数交换一次,并将左端数作为基准参考数,从右边开始向左找比基准数小的数,如果有,则把这个数赋值到左边儿去,然后从左边开始向右找比基准数大的数,如果有,则把这个数赋值到右边儿去,进行递归算法…举例子:3 5 8 2 6 中基准数base=3,1、右侧开始...原创 2020-04-02 22:21:14 · 913 阅读 · 1 评论 -
【内存分配问题】【数组下标越界产生的影响】
引言昨天晚上写代码的时候发现个事情:代码很简单,定义变量mmm,中间在循环中运算了一个数组aaa,后面用到了while(m−−)while(m--)while(m−−),然后问题来了,m被改变了…纠结了很久没发现问题,后来了解到是数组下标越界产生的影响(盲点,一般数组还是老老实实开大点吧(ps.后文中数组越界是数组下标越界的简写)今天早上把这个问题提炼出来,进行一个小小的测试吧,如下:测试...原创 2020-03-31 09:13:29 · 879 阅读 · 0 评论 -
UESTCOJ1256 昊昊爱运动
题意关键点对一个数列中的第l到r个进行搜索,其中有多少种不同的数字?TimeLimit:1000ms.Time Limit:1000ms.TimeLimit:1000ms.思路正确但是超时 代码#include <bits/stdc++.h>#define max_N 10000000using namespace std;int main(){ int N,M,a...原创 2020-03-25 12:00:30 · 545 阅读 · 0 评论 -
acm 堆栈 队列 二叉树
堆栈简单的逆序问题#include <bits/stdc++.h>using namespace std;int main(){ char ch,stack[1001]; int top=-1; while((ch=getchar())!='#'){ stack[++top]=ch; } while(top>=0){ putchar(stack[to...原创 2020-03-18 23:25:09 · 198 阅读 · 0 评论 -
红帽自动机
这道题的题意比较调皮,附上OJ链接:红帽自动机简述题意红帽侠对着n个人中的第k个人吼“你将加冕为王”后,除了第k个人的其余所有人都戴上一顶红帽,现在希望第x个人戴上的红帽数量最多,请问:至少需要喊多少次?这道题让我联想到硬币翻转问题,但是直观来讲,硬币翻转问题需要关注过程,而这道题,我们只需要关注数量大小的比较及其结果附上硬币翻转问题的题解:硬币翻转问题"加冕为王"的题解如下:#inc...原创 2020-03-16 10:01:32 · 209 阅读 · 0 评论 -
UESTCOJ95 Ants Run !
Ants Run !题意简述一个半径为R的圆周上有N只蚂蚁,并且已知每一只蚂蚁的速度v,我们可以任意地调整两只蚂蚁之间的间隔距离,但是不能调整每一只蚂蚁的位置(下标)。规定只要有蚂蚁追上了前面一只,则游戏结束,并记录这个时间t,试问:通过调整距离,我们能否得到这个最大游戏时间?如果可以,输出具体的计算值(保留三位小数),如果不行,输出"Inf".解题思路考虑如果每只蚂蚁的速度相同,那么能够...原创 2020-03-14 20:56:13 · 286 阅读 · 0 评论 -
UESTCOJ649 括号配对
题目描述大家都知道算术表达式中, 括号必须配对, 现任意给出一个算术表达式, 判断其括号是否配对. 如果配对, 输出Yes, 否则输出No.本题不需要考虑表达式的合法问题。Standard Input含多组测试数据, 输入首先是一个整数T表示测试数据组数(0<T≤300). 随后有T行测试数据, 每行是长度不超过1000的数学表达式, 其内部不含空格.Standard Output...原创 2020-03-08 12:20:27 · 343 阅读 · 0 评论 -
哈希排序算法
哈希排序遇到这样一道题,数据很大,如果将数字排序后再输出,得到的结果是TLE(超时),我们选择用哈希排序的方法,降低时间复杂度到O(n)O(n)O(n),同时也牺牲了空间【用空间换取时间】。将数的大小映射到数组下标,下标越大,这个数越大,处理数组的数据实现。具体的数有多大,这个数组的范围就要开到多大,所以一定要仔细审题,理清题意中的范围。细节见代码注释…题目描述TimeLimit:10...原创 2020-03-05 11:27:39 · 4161 阅读 · 1 评论 -
ACM练习 蛇形填数
#include<bits/stdc++.h>#define N 25using namespace std;int main(){ int T; cin>>T; while(T--){ int n; cin>>n; int a[N][N]; int num=1; ...原创 2020-03-04 11:46:29 · 218 阅读 · 0 评论 -
开关灯问题
题目重述有n盏灯, 编号为1~n. 第1个人把所有灯打开, 第2个人按下所有编号为2的倍数的开关(这些灯将被关掉), 第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开, 开着的灯将被关闭), 依此类推. 一共有k个人, 问最后有哪些灯开着?Standard Input有多组测试数据. 输入的第一行是整数T(0<T≤100), 表示测试数据的组数. 每一组测试数据只有一行, 依...原创 2020-02-29 16:41:47 · 891 阅读 · 0 评论 -
【水题】最大公约数和最小公倍数的超时问题
从标准输入设备读入两个正整数,求两数的最大公约数与最小公倍数。Standard Input有多组测试数据。输入的第一行是整数T(0<T≤100),表示测试数据的组数。每一组测试数据只有一行,分别为整数a和b,两数之间有一个空格。0<a,b≤32767。Standard Output对应每组输入,输出一行对应两数的最大公约数和最小公倍数,两数之间用一个空格隔开。直接用循环的思路...原创 2020-02-27 22:04:14 · 716 阅读 · 0 评论 -
luogu_P1618
循环最小的aaa,用A:B:CA:B:CA:B:C这个比例来表示b、cb、cb、cb=a∗B/Ab=a*B/Ab=a∗B/Ac=a∗C/Ac=a*C/Ac=a∗C/A尽管我们知道:b=a∗B/A<=>b=a∗(B/A)b=a*B/A <=>b=a*(B/A)b=a∗B/A<=>b=a∗(B/A)但是不能这样写,因为如果B/AB/AB/A并不是整型,那么...原创 2020-02-12 13:03:44 · 133 阅读 · 0 评论 -
luogu_P1426
传送门本题的教训是要认真审题!小鱼单向向右运动,不会回头躲避炸弹的进入探测器那一刻的该秒结束,信息才到猎人如果初始x>sx>sx>s,那么起点在范围内即sum>s−xsum>s-xsum>s−x,不应再进循环累加行进路程小鱼完全有可能在某一秒内跨过[s−x,s+x].[s-x,s+x].[s−x,s+x].#include<bits/stdc+...原创 2020-02-11 17:01:38 · 113 阅读 · 0 评论 -
luogu_P1150
传送门循环:求余(打包)、求剩、求和#include<bits/stdc++.h>using namespace std;int main(){ long long k,n,res,m,left,sum,i; long long cnt=0; cin>>n>>k; sum=n;//key:用sum存储n,避免n改变 do{ m=sum/...原创 2020-02-05 17:13:43 · 124 阅读 · 0 评论 -
luogu_P1146
1、对于N枚硬币每次翻转N-1枚,等价于有一枚硬币没有翻转,也等价于一枚硬币翻转了,那么对于第一个问题:最少次数也就是N次(直接输出)2、对于N枚硬币翻N-1枚的理解:把整个过程分拆成两个步骤1)每次翻一枚硬币 2)将所有硬币全部翻转一次当硬币的总数是偶数时,步骤2)执行了偶数次,所以2)产生的效果抵消,执行了N次1)那么满足当硬币的总数时奇数时,步骤2)无法抵消,所以1)将其全部...原创 2020-02-05 13:07:51 · 226 阅读 · 0 评论 -
质因数分解的坑点
题目重述已知正整数nnn是两个不同的质数的乘积,试求出两者中较大的那个质数。其中n≤2×109n≤2×10^9n≤2×109当然我的思路就真的非常直接了,循环两个乘数,满足乘积正确,并且判断两数为质数,代码如下:#include<bits/stdc++.h>using namespace std;bool isPrime(int x)//判断是否为质数(布尔变量){ ...原创 2020-02-04 18:55:21 · 171 阅读 · 0 评论 -
CF1A Theatre Square
这道题在于精度的问题,值得探究#include<bits/stdc++.h>using namespace std;int main(){ long long a,n,m;//long long 类型 cin>>n>>m>>a; long long x=ceil((double)n/a); long long...原创 2020-01-28 18:46:06 · 280 阅读 · 0 评论 -
luogu_P2141
这道题还是有坑点的,我很容易就跳了进去。注意题目的描述“其中有多少个数,恰好等于集合中另外两个(不同的)数之和?”那么关于重复的问题,就不仅仅是1+4=5和4+1=5了,还有1+4=5和2+3=5,这两种加法的求和结果都是5,应该只是一种情况!解决方法就是用数组b和a一一对应,从数组a中无重复取出两个数相加求和,再从b中遍历数组,找到与求和结果相同的数后计数+1!!!并且!!!将数组b中的这个...原创 2020-01-27 20:07:16 · 172 阅读 · 0 评论 -
luogu_P1047
注意三点:1、起始点是可以有重合部分的2、用一个数组的0/1来标注是否已经在区域内了3、循环表示次数时,用for(i=0;i<M;i++)或for(i=1;i<=M;i++)而循环遍历数轴时,用for(i=0;i<=L;i++)在这里插入代码片...原创 2020-01-27 11:47:16 · 143 阅读 · 0 评论 -
线性单向链接表
前言最近才开始学习指针、结构体,整理一下这几天有点晕的链表部分一、链表的概述线性表的链式存储结构称为链表,每个存储结点包含数据域和指针域,在采用链式存储时,在每个结点中除包含数据域以外只设置一个指针域用于指向其后继结点,这样构成的链表称线性单向链接表。头指针:每个链表有一个头结点,并同故宫头结点的指针唯一标识该链表,称之为头指针。首指针:指向首结点或开始结点的指针称为首指针。尾指针:指...原创 2019-12-16 21:28:29 · 335 阅读 · 1 评论 -
大一上 随机步法 笔记
题意想过很多种思路,比如直接用A-Z的ASCII来做循环,再判断周围是否为点,然后继续下去,但是如果生成的随机数是让其走出范围的或撞上已有的字母的,就需要重新生成随机数直到找到路,最后无路可走结束,又需要一次进一步判断。也想过把0 1 2 3试过后都不能前进则结束程序,但是计数又不太方便。方法还是选择分块写不同判断的函数来实现这个过程。...原创 2019-12-11 00:51:48 · 542 阅读 · 1 评论