Untitled
unknown
plain_text
2 years ago
1.2 kB
10
Indexable
#include <iostream>
#include <climits>
using namespace std;
void bestFit(int blockSize[], int m, int processSize[], int n) {
int allocation[n];
for (int i = 0; i < n; i++) {
int bestIdx = -1;
for (int j = 0; j < m; j++) {
if (blockSize[j] >= processSize[i]) {
if (bestIdx == -1 || blockSize[j] < blockSize[bestIdx]) {
bestIdx = j;
}
}
}
if (bestIdx != -1) {
allocation[i] = bestIdx;
blockSize[bestIdx] -= processSize[i];
} else {
allocation[i] = -1;
}
}
cout << "Process No\tProcess Size\tBlock Number\n";
for (int i = 0; i < n; i++) {
cout << " " << i+1 << "\t\t" << processSize[i] << "\t\t";
if (allocation[i] != -1) {
cout << allocation[i] + 1 << endl;
} else {
cout << "Not Allocated" << endl;
}
}
}
int main() {
int blockSize[] = {100, 50, 30, 120, 35};
int processSize[] = {40, 10, 30, 60};
int m = sizeof(blockSize) / sizeof(blockSize[0]);
int n = sizeof(processSize) / sizeof(processSize[0]);
bestFit(blockSize, m, processSize, n);
return 0;
}
Editor is loading...
Leave a Comment