广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >银行家算法 C语言实现
  • 954
分享到

银行家算法 C语言实现

C语言 2023-09-28 17:09:59 954人浏览 泡泡鱼
摘要

以下是银行家算法在C语言中的实现:```c#include // 资源数量#define M 3// 进程数量#define N 5

以下是银行家算法C语言中的实现:
```c
#include
// 资源数量
#define M 3
// 进程数量
#define N 5
void calculateNeed(int need[N][M], int max[N][M], int allocation[N][M]) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
need[i][j] = max[i][j] - allocation[i][j];
}
}
}
int isSafe(int available[M], int need[N][M], int allocation[N][M]) {
int finish[N] = { 0 };
int work[M];
for (int i = 0; i < M; i++) {
work[i] = available[i];
}
int count = 0;
while (count < N) {
int found = 0;
for (int i = 0; i < N; i++) {
if (!finish[i]) {
int j;
for (j = 0; j < M; j++) {
if (need[i][j] > work[j]) {
break;
}
}
if (j == M) {
for (int k = 0; k < M; k++) {
work[k] += allocation[i][k];
}
finish[i] = 1;
found = 1;
count++;
}
}
}
if (!found) {
break;
}
}
if (count == N) {
return 1; // 安全
} else {
return 0; // 不安全
}
}
int main() {
int available[M] = { 3, 3, 2 };
int max[N][M] = { { 7, 5, 3 }, { 3, 2, 2 }, { 9, 0, 2 }, { 2, 2, 2 }, { 4, 3, 3 } };
int allocation[N][M] = { { 0, 1, 0 }, { 2, 0, 0 }, { 3, 0, 2 }, { 2, 1, 1 }, { 0, 0, 2 } };
int need[N][M];
calculateNeed(need, max, allocation);
if (isSafe(available, need, allocation)) {
printf("系统是安全的\n");
} else {
printf("系统是不安全的\n");
}
return 0;
}
```
以上代码实现了银行家算法的主要逻辑。输入的数据包括资源的数量、进程的数量、可用资源、最大需求矩阵和已分配矩阵。首先通过`calculateNeed`函数计算出需求矩阵。然后通过`isSafe`函数判断系统是否是安全的。如果是安全的,则输出"系统是安全的",否则输出"系统是不安全的"。

--结束END--

本文标题: 银行家算法 C语言实现

本文链接: https://www.lsjlt.com/news/420381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 银行家算法 C语言实现
    以下是银行家算法在C语言中的实现:```c#include // 资源数量#define M 3// 进程数量#define N 5...
    99+
    2023-09-28
    C语言
  • C#实现银行家算法
    本文实例为大家分享了C#实现银行家算法的具体代码,供大家参考,具体内容如下 1.死锁 死锁,顾名思义,是一种锁住不可自行解开的死局。 在操作系统中,“死锁”用于描述资源分配时,进程互...
    99+
    2022-11-12
  • C#如何实现银行家算法
    这篇文章给大家分享的是有关C#如何实现银行家算法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.死锁死锁,顾名思义,是一种锁住不可自行解开的死局。在操作系统中,“死锁”用于描述资源分配时,进程互相抢占资源,又因...
    99+
    2023-06-15
  • C语言实现模拟银行系统
    本文实例为大家分享了C语言实现银行系统的具体代码,供大家参考,具体内容如下 1.实现要求 生成一个1000-1000000之间的随机数来代表账户余额(要求每次生成的数不一样);实现登...
    99+
    2022-11-13
  • C语言如何实现银行ATM存取款系统
    这篇文章给大家分享的是有关C语言如何实现银行ATM存取款系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、课程设计的目的掌握C语言程序设计的基础知识、基本理论、原理和实现技术。二、课程设计的题目银行ATM存取...
    99+
    2023-06-25
  • C语言简单实现银行ATM存取款功能
    这里使用的运行工具是DEV C++。老铁们一定要看仔细了。是DEV C++ 一、课程设计的目的 掌握C语言程序设计的基础知识、基本理论、原理和实现技术。 二、课程设计的题目 银行...
    99+
    2022-11-12
  • C语言实现银行管理系统(文件操作)
    本文实例为大家分享了C语言实现银行管理系统的具体代码,供大家参考,具体内容如下 银行管理系统主要有五个模块组成: 1、查询账户信息2、存钱3、取款4、转账5、退出系统 测试文件:(首...
    99+
    2022-11-13
  • C语言编程银行ATM存取款系统实现源码
    目录一、课程设计的目的二、课程设计的题目三、设计内容银行ATM存取款系统实现的效果源码业务流程1、用户开户2、登录流程3、密码修改这里使用的运行工具是DEV C++。老铁们一定要看仔...
    99+
    2022-11-12
  • c语言如何实现排序算法
    小编给大家分享一下c语言如何实现排序算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.选择排序-简单选择排序选择排序是最简单的一种基于O(n2)时间复杂度的排...
    99+
    2023-06-15
  • C语言怎么实现扫雷算法
    这篇文章主要讲解了“C语言怎么实现扫雷算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么实现扫雷算法”吧!扫雷分析从小到大你或许没玩过但一定听过的游戏——扫雷首先我们来分一下“扫雷...
    99+
    2023-06-20
  • go语言实现银行卡号Luhn校验
    目录一、银行卡号码的校验规则二、生成符合Luhn规则的银行卡号测试数据思路:整个代码如下:一、银行卡号码的校验规则 银行卡号码的校验采用Luhn算法,校验过程大致如下: 1. 从右到...
    99+
    2022-11-13
  • C语言实现家庭理财系统
    本文实例为大家分享了C语言实现家庭理财系统的具体代码,供大家参考,具体内容如下 比较简单 直接上代码: #include <stdio.h> #include &l...
    99+
    2022-11-12
  • C语言实现BF算法案例详解
    BF算法:        BF算法即暴风算法,是普通的模式匹配算法。BF算法的思想:将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相...
    99+
    2022-11-12
  • 用C语言实现二分查找算法
    目录一.前言二.二分查找法1.什么是二分查找法2.如何用c语言来实现二分查找法三.总结总结一.前言 假如今天我们需要在一个有序的数组中来寻找一个数的下标,就用"1,2,3,...
    99+
    2022-11-12
  • C语言实现扫雷算法简易版
    扫雷分析 从小到大你或许没玩过但一定听过的游戏——扫雷 首先我们来分一下“扫雷”的功能 这是一个简单难度的扫雷,从外观上,我们可以发现可供用户操作的棋盘范围是9×9的范围,也就是我...
    99+
    2022-11-12
  • c语言pid控制算法怎么实现
    C语言中,可以通过使用fork函数来创建子进程,然后使用exec函数族中的一个函数来在子进程中执行另一个程序。这样可以实现简单的pi...
    99+
    2023-09-21
    c语言
  • C语言怎么实现三子棋算法
    这篇文章主要介绍“C语言怎么实现三子棋算法”,在日常操作中,相信很多人在C语言怎么实现三子棋算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现三子棋算法”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • C语言实现快速排序算法实例
    首先我们要对一组数据进行排序: 在数组中选一个基准数(通常为数组第一个,黄圈圈标记了); 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边,怎么移动,后面说; 对于基准数...
    99+
    2022-11-13
  • C语言实现页面置换算法(FIFO、LRU)
    目录1.实现效果2.实现源代码 1.实现效果 2.实现源代码  #include<iostream> #include<process.h> #inc...
    99+
    2022-11-12
  • C语言如何实现快速排序算法
    这篇文章将为大家详细讲解有关C语言如何实现快速排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码#define  _CRT_SECURE_NO_WARNINGS 1/...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作