91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

銀行家算法 C語言實現

小云
87
2023-09-28 10:13:08
欄目: 編程語言

以下是銀行家算法在C語言中的實現:

#include <stdio.h>
// 資源數量
#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函數判斷系統是否是安全的。如果是安全的,則輸出"系統是安全的",否則輸出"系統是不安全的"。

0
舟山市| 昭苏县| 蒙自县| 巨鹿县| 河北区| 阿合奇县| 滨州市| 哈密市| 蒙城县| 仁寿县| 航空| 阳信县| 道孚县| 通道| 深水埗区| 盘山县| 大名县| 鲜城| 青海省| 武功县| 玛曲县| 武威市| 巴南区| 咸宁市| 左云县| 扎囊县| 海盐县| 读书| 卢氏县| 张家港市| 普兰店市| 周至县| 上饶市| 永平县| 昌图县| 广汉市| 武强县| 邵武市| 营山县| 西城区| 东港市|