Skip to content

Commit 656e0b5

Browse files
Merge pull request #64 from tanaytoshniwal/master
shortest job first cpu scheduling algorithm and N-Queens Algorithm in C++
2 parents 20e197e + a2c93a2 commit 656e0b5

File tree

3 files changed

+123
-0
lines changed

3 files changed

+123
-0
lines changed

Backtracking/N-Queen/CPP/nqueens.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
bool safe(int* arr[], int row, int col, int size){
5+
for(int i=0;i<row;i++){
6+
if(arr[i][col] == 1) return false;
7+
}
8+
for(int i=row, j=col;i>=0 && j>=0;i--, j--){
9+
if(arr[i][j] == 1) return false;
10+
}
11+
for(int i=row, j=col;i>=0 && j<size;i--, j++){
12+
if(arr[i][j] == 1) return false;
13+
}
14+
return true;
15+
}
16+
void n_queen(int* arr[], int row, int size){
17+
if(row>=size){
18+
for(int i=0;i<size;i++){
19+
for(int j=0;j<size;j++){
20+
cout << arr[i][j] << " ";
21+
}
22+
}
23+
cout << endl;
24+
return;
25+
}
26+
for(int i=0;i<size;i++){
27+
if(safe(arr, row, i, size)){
28+
arr[row][i] = 1;
29+
n_queen(arr, row+1, size);
30+
arr[row][i] = 0;
31+
}
32+
}
33+
}
34+
void placeNQueens(int n){
35+
int** arr = new int*[n];
36+
for(int i=0;i<n;i++){
37+
arr[i] = new int[n];
38+
for(int j=0;j<n;j++){
39+
arr[i][j] = 0;
40+
}
41+
}
42+
n_queen(arr, 0, n);
43+
}
44+
int main(){
45+
int n;
46+
cin >> n ;
47+
placeNQueens(n);
48+
return 0;
49+
}
Binary file not shown.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
int arr[10][6];
5+
6+
void swap(int *a, int *b){
7+
int temp = *a;
8+
*a = *b;
9+
*b = temp;
10+
}
11+
12+
void arrangeArrival(int num, int arr[][6]){
13+
for(int i=0; i<num; i++){
14+
for(int j=0; j<num-i-1; j++){
15+
if(arr[j][1] > arr[j+1][1])
16+
for(int k=0; k<5; k++)
17+
swap(arr[j][k], arr[j+1][k]);
18+
}
19+
}
20+
}
21+
22+
void completionTime(int num, int arr[][6]){
23+
int temp, val;
24+
arr[0][3] = arr[0][1] + arr[0][2];
25+
arr[0][5] = arr[0][3] - arr[0][1];
26+
arr[0][4] = arr[0][5] - arr[0][2];
27+
28+
for(int i=1; i<num; i++){
29+
temp = arr[i-1][3];
30+
int low = arr[i][2];
31+
for(int j=i; j<num; j++){
32+
if(temp >= arr[j][1] && low >= arr[j][2]){
33+
low = arr[j][2];
34+
val = j;
35+
}
36+
}
37+
arr[val][3] = temp + arr[val][2];
38+
arr[val][5] = arr[val][3] - arr[val][1];
39+
arr[val][4] = arr[val][5] - arr[val][2];
40+
for(int k=0; k<6; k++)
41+
swap(arr[val][k], arr[i][k]);
42+
}
43+
}
44+
45+
int main(){
46+
int num, temp;
47+
48+
cout << "Enter number of Process: ";
49+
cin >> num;
50+
51+
cout << "Enter the process ID: ";
52+
for(int i=0; i<num; i++){
53+
cout << "Process " << i+1 << endl;
54+
cout << "Enter Process Id: ";
55+
cin >> arr[i][0];
56+
cout << "Enter Arrival Time: ";
57+
cin >> arr[i][1];
58+
cout << "Enter Burst Time: ";
59+
cin >> arr[i][2];
60+
}
61+
62+
cout << "Before Arrange" << endl;
63+
cout << "Process ID\tArrival Time\tBurst Time\n";
64+
for(int i=0; i<num; i++)
65+
cout << arr[i][0] << "\t\t" << arr[i][1] << "\t\t" << arr[i][2] << "\n";
66+
67+
arrangeArrival(num, arr);
68+
completionTime(num, arr);
69+
cout << "Final Result\n";
70+
cout << "Process ID\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time\n";
71+
for(int i=0; i<num; i++)
72+
cout << arr[i][0] << "\t\t" << arr[i][1] << "\t\t" << arr[i][2] << "\t\t" << arr[i][4] << "\t\t" << arr[i][5] << "\n";
73+
return 0;
74+
}

0 commit comments

Comments
 (0)