动态规划初步 在这周算法题公布之前,我对动态规划的了解是只停留在表面的,只知道一个名词而已。 而这次的算法题,让我对动态规划有了一个初步的了解 我在做题的过程中,总结出了动态规划我认为比较重要的几个点 1.大问题化小问题:即问题是可以化为子问题的 2.记忆性,下一步会用到上一步的结果,所以这个结果必须是可记忆的,是层层递进的 3.状态的转移:状态转移方程是一个关键点(埋坑) HDU 2084 #include<stdio.h> int dp[100][100]; int main(int argc, char const *argv[]) { int num,line; int i,j; scanf("%d",&num); while(num--) { scanf("%d",&line); for(i=0;i<line;i++) for(j=0;j<=i;j++) { 继续阅读 >>


李高晋 18/08/12 21:44:24
并行与并发(测试2) 理解: 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群 普通解释: 并发:交替做不同事情的能力 并行:同时做不同事情的能力 专业术语: 并发:不同的代码块交替执行 并行:不同的代码块同时执行 同步与异步 有两个线程在并发执行以下代码段, 其中 g 是 int 类型的全局变量。 请 问当两个线程都执行完毕该代码段后, g 的值的取值范围为50000-100000。 for (int i = 1; i <= 50000; i++) { g += 1; } 当多个控制线程共享内容的内存时,需要确保每个线程看到一致的数据视图。如果每个线程使用的变量都是其他线程不会读取和修改的,那么就不存在一致性的问题。但是,当一个线程可以修改的变量 继续阅读 >>


李高晋 18/08/12 21:34:38
算法题每周一坑(BFS 与队列 DFS与递归) 搜索 POJ 3984 迷宫 迷宫题:这道题因为迷宫大小有限,所以我用了结构体数组对队列进行模拟 struct node{ int x,y,pre;  //需要保存上一个节点的下标,为了之后输出坐标 }queue[100]; 总体思路是:从第一个(0,0)点判断周围所有可能的节点,按照顺序进入队列  出队时,递归输出路径的坐标,因为是BFS(层层推进),所以当队列中访问到  最终出口时,即为为短路径 POJ 3278 闪现中的入队出队,输出数据(不用第一题的递归) hile(front<rear) { if(queue[front].x==b) { printf("%d\n",queue[front].step); return; } for(i=0;i<3;i++){ if (i == 0) next_step=queue[front 继续阅读 >>


李高晋 18/08/03 19:54:48
与shell命令相关函数调用 linuxC dup 和 dup2 函数 #include<unistd.h> int dup(int oldfd); int dup2(int oldfd,int newfd) dup用来复制oldfd所指的文件描述符。当复制成功时返回最小的尚未被使用的文件描述符。若有错误则返回-1,错误代码存入errno中。返回的新文件描述符和参数oldfd指向同一个文件,共享所有的锁定,读写指针,和各项权限或标志位。  (类似于链接)  dup2可以用参数newfd指定新文件描述符的数值。若newfd已经被程序使用,系统就会将其关闭以释放该文件描述符;若newfd与oldfd相等,dup2将返回newfd,而不关闭他。dup2调用成功返回新的文件描述符,出错则返回-1。     (重定向)    标准输入(stdin),标准输出(stdout),标准出错信息(stderr)的文件号分别为0,1,2。         例如,使用了dup(newfd,1)后,控 继续阅读 >>


李高晋 18/08/02 08:44:04
ls -R 的递归实现 LinuxC文件操作 递归 动态数组 之前对递归和动态数组用的不是很多,可能理解已不是很深  这一次实现ls -R的递归刚好巩固了自己的薄弱点  下面主要是重新梳理一下之前的逻辑  不说说了,先放码: void display_dir(int flag,char*name) { DIR * dir; struct dirent *ptr; int i,count = 0; struct stat buf; char name_dir[10000]; if(chdir(name)<0) //将输入的目录改为当前目录,下面操作的前提 { my_err("chdir",__LINE__); } if(getcwd(name_dir,10000)<0){ my_err("getcwd",__LINE__); //获取当前目录的绝对路径(重要,下面的打开目录 继续阅读 >>


李高晋 18/07/29 21:51:22
算法题每周一坑 B HDU 2002 (-2) 这个题是因为输入时候的转义字符没有写对  一开始用的是float  输入的时候用的是%f  后来改成double之后没有改转义字符 C HDU 2029 (-8) 这个就比较坑了,提交了八次  做算法题那天可能心态不好没有查好错  -运行时错误 数组开的太小oj判定的时候数字可能很大 经验问题 这个属于非技术问题 要记住  -好好看一下数组边界,for循环到什么时候停止 F HDU 2017 (-4) 定义的变量要在用之前要在合适的位置初始化 G HDU2019(-5) 对结尾空格的输出需要注意 H HDU2024(-4) 这个是个非常恼人的问题:  在每次进入循环的时候要吧计数的变量初始化!!!犯了不止一次 I HDU2039(-11) 这个问题可以荣登每周一坑冠军榜了  输出的yes no的大小写问题,因为这个提交了11次  下一次做题时直接题目上的输出直接复制下来比较稳妥(有经验的大佬说的) K HDU2012(-12) 继续阅读 >>


李高晋 18/07/29 21:07:17
指针数组与数组指针int *p[4]; //p代表一个含有四个指向int类型的指针的数组int (*p)[n]; //p代表一个指向含有n个元素的指针 指向函数的指针int *p(); //p为返回指针的函数==int* p()int (*p)(); //p为指向函数的指针int(*p[3])(int ); // p为含有三个指向函数的指针 函数指针数组 int* (*p[3])(int); //空格的位置会影响理解 //p为指针数组 函数的返回值为int类型的指针 作者:DownloadV 发表于 2018/06/04 21:31:35 原文链接 https://blog.csdn.net/DownloadV/article/details/80572560 继续阅读 >>


李高晋 18/06/04 21:31:35
1