笔记
文章平均质量分 66
qq_sxaqsqw
学大汉武立国
展开
-
死锁例证:哲学家就餐
由Edsger Dijkstra提出的哲学家就餐问题是一个经典的死锁例证。该问题的基本描述中是指定五个哲学家(本例中可以自由指定数目)。这些哲学家将花部分时间思考,花部分时间就餐。当他们思考时,不需要任何共享资源;但当他们就餐时,将使用有限的餐具。在问题的原始描述中,餐具是叉子,但在本例中,将使用筷子。很明显,哲学家就餐需要两根筷子。问题中引入的难点是:作为哲学家,他们很穷,所以他们只能买五根筷子(更一般的讲,筷子和哲学家的数量相同)。他们围坐在桌子周围,每两人之间放一根筷子。当一个哲学家要就餐的时候,这原创 2021-09-15 19:25:56 · 215 阅读 · 0 评论 -
震惊!居然还有人不知道写控制台小游戏必备的函数!
这些函数都是从其他作者那里学习,本人总结,在此十分感谢他们!文章目录一、在控制台指定位置输出1、COORD类型2.GetStdHandle()3、SetConsoleCursorPosition()二、鼠标操作1、获取鼠标相对屏幕坐标BOOL GetCursorPos(LPPOINT lpPoint)2、获取控制台相对屏幕坐标1、BOOL WINAPI SetConsoleTitle(__in LPCTSTR lpConsoleTitle)2、HWND FindWindow(LPCSTR lpClassN原创 2021-06-05 11:21:48 · 665 阅读 · 3 评论 -
Dijkstra算法介绍及其优先队列优化和斐波那契堆优化
Dijkstra算法介绍及其优先队列优化和斐波那契堆优化文章目录一、dijkstra算法概述二、实现dijkstra算法需要掌握的算法知识1、从数据中剔除最小项(函数ExtractMin())2、松弛操作3、伪代码分析三、最小优先队列概述四、最小优先队列伪代码分析1.维护堆的性质2.建堆3.剔除最小节点:4.关键字减值(松弛操作,具体实现中将此函数命名为relax())五、例题分析1. 首先设法存储输入的数据2. 设计最小优先队列3.实现Dijkstra算法(限于题目要求,略显臃肿):4.与优先队列原创 2021-05-06 07:50:09 · 4811 阅读 · 3 评论 -
常用文件函数总结
常用文件函数总结文章目录常用文件函数总结一.fopen()函数1. fopen()的模式字符串二.fclose()函数三.getc()函数四.putc()函数五. fprintf()函数六.fscanf()函数七.fgets()函数八.fputs()函数九.fseek()函数十.ftell()函数十一.fgetpos()函数十二.fsetpos()函数一.fopen()函数它的第一个参数是待打开文件的名称,第二个参数是一个字符串,指定待打开文件的模式。1. fopen()的模式字符串模原创 2021-03-12 07:45:41 · 2198 阅读 · 4 评论 -
指针与数组、函数
《c primer plus 》阅读笔记一、指针表示法和数组表示法:1.指针表示法和数组表示法优缺使用数组表示法,让函数是处理数组的这一意图更加明显。另外,许多其他语言的程序员对数组表示法更熟悉,如FORTRAN、Pascal、Modula-2或BASIC。其他程序员可能更习惯使用指针表示法,觉得使用指针更自然。至于C语言,ar[i]和*(ar+1)这两个表达式是等价的。无论ar是数组名还是指针变量,这两个表达式都没有问题。但是,只有当ar是指针变量时,才能使用ar++这样的表达式。指针表示法(尤原创 2021-01-28 15:37:17 · 489 阅读 · 9 评论 -
十六进制用strtol()函数转换为十进制
16进制用strtol()转换为十进制题目:输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。#include<stdio.h>#include<stdlib.h>int main(void){ int i,j,k=0,wei; long value; char a[100],b[100],*en原创 2021-01-22 17:09:09 · 638 阅读 · 0 评论 -
递归解决汉诺塔
递归解决汉诺塔#include<stdio.h>//将a柱子盘子借助b柱子移到c柱子void han(int,char,char,char);void move(char,char);int main(void){ int n; char a='a',b='b',c='c'; scanf("%d",&n); han(n,a,b,c); return 0;}void han(int n,char a,char b,char c){原创 2021-01-20 11:09:31 · 157 阅读 · 0 评论 -
四种去重方法耗时比较
pta上一直说我的答案错误,但是运行的答案都对#include<stdio.h>#include<math.h>int main(){long int h,n;double s=0,h1;int i;scanf("%ld%ld",&h,&n);if(h1&&n0){ printf(“1.0 0.0\n”);return 0;}for(i=1;i<=n;i++){s=s+hpow(1/2.0,i-1);if(i>原创 2020-11-24 13:18:42 · 290 阅读 · 0 评论