- 博客(11)
- 问答 (9)
- 收藏
- 关注
原创 死锁例证:哲学家就餐
由Edsger Dijkstra提出的哲学家就餐问题是一个经典的死锁例证。该问题的基本描述中是指定五个哲学家(本例中可以自由指定数目)。这些哲学家将花部分时间思考,花部分时间就餐。当他们思考时,不需要任何共享资源;但当他们就餐时,将使用有限的餐具。在问题的原始描述中,餐具是叉子,但在本例中,将使用筷子。很明显,哲学家就餐需要两根筷子。问题中引入的难点是:作为哲学家,他们很穷,所以他们只能买五根筷子(更一般的讲,筷子和哲学家的数量相同)。他们围坐在桌子周围,每两人之间放一根筷子。当一个哲学家要就餐的时候,这
2021-09-15 19:25:56
226
原创 震惊!居然还有人不知道写控制台小游戏必备的函数!
这些函数都是从其他作者那里学习,本人总结,在此十分感谢他们!文章目录一、在控制台指定位置输出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
700
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
5311
3
原创 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)
文章目录前言一.首先要对网上下载的文件进行必要的修改1.将段与段之间的空行删除2.将每一段段首设置为两个空格(包括标题)1.将Word文档复制到文本文档中:2.使用替换3.将完成好的文本复制粘贴到编译器中(Dev c++)前言网上下载的所谓中英对照文本往往都是中英分开的两个文本:函数1. fopen()的模式字符串二.fclose()函数三.getc()函数四.putc()函数五. fprintf()函数六.fscanf()函数七.fgets()函数八.fputs()函数九.fseek()函数十.ftell()函数十一.fgetpos()函数十二.fsetpos()函数一.fopen()函数它的第一个参数是待打开文件的名称,第二个参数是一个字符串,指定待打开文件的模式。1. fopen()的模式字符串模
2021-03-12 07:45:41
2229
4
原创 链表练习
连续使用两个链表的例子注意:下面的讨论的目的是更好的理解和掌握链表,所以请不要纠结于为什么会有人写这种代码…要求:创建一个可以存储int类型的链表,以回车键表示输入结束。思路:1.在主函数调用一个自定义的输入函数,用以输入数据,根据该函数的返回值判断是否继续输入。2.关于自定义的输入函数:以字符的形式获取用户输入(可以用另一个函数将输入的字符"123"转换为数字123,不要问为什么要这样,非要问的话,请看开头),由于事先不知道用户会输入多少字符,所以这里就又可以用链表实现。...
2021-02-14 15:38:09
212
原创 指针与数组、函数
《c primer plus 》阅读笔记一、指针表示法和数组表示法:1.指针表示法和数组表示法优缺使用数组表示法,让函数是处理数组的这一意图更加明显。另外,许多其他语言的程序员对数组表示法更熟悉,如FORTRAN、Pascal、Modula-2或BASIC。其他程序员可能更习惯使用指针表示法,觉得使用指针更自然。至于C语言,ar[i]和*(ar+1)这两个表达式是等价的。无论ar是数组名还是指针变量,这两个表达式都没有问题。但是,只有当ar是指针变量时,才能使用ar++这样的表达式。指针表示法(尤
2021-01-28 15:37:17
500
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
670
原创 递归解决汉诺塔
递归解决汉诺塔#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
169
原创 四种去重方法耗时比较
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
306
空空如也
为什么this关键字只能在一个构造器的首行调用另一个构造器
2022-01-01
如何利用selenium实现向控制台输入命令(如cid)并获取输出
2021-11-07
8体交叉编址的CPU和存储芯片的连接图
2021-10-18
Swing滚动文本区域使用绝对定位时不显示文本区域
2021-09-19
我希望通过共享同一资源产生混乱的结果,但是实际结果总是符合预期(JAVA多线程)
2021-09-08
java 多线程任务停不下来
2021-09-07
运行程序时控制台自动粘贴粘贴版内容,使得程序无法获取正确输入
2021-06-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人