CS153/hw6/hw4programs/sp22_tests/max_envelopes.oat
jmug ee01a8f5b2 Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 23:10:01 -08:00

58 lines
1.4 KiB
Text

void bubble_sort(int[][] arr, int n) {
for (var i = 0; i < n-1; i = i+1;) {
for (var j = 0; j < n-i-1; j = j+1;) {
if ((arr[j][0] > arr[j+1][0]) |
((arr[j][0] == arr[j+1][0]) & (arr[j][1] < arr[j+1][1])) ) {
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return;
}
int longest_increasing_subsequence(int[] arr, int n) {
var dp = new int[n];
var max_subsequence = 0;
for (var i = 0; i < n; i = i+1;) {
dp[i] = 1;
var max_seq = 0;
for (var j = 0; j < i; j = j+1;) {
if (arr[i] > arr[j] & dp[j] > max_seq) {
max_seq = dp[j];
}
}
dp[i] = max_seq + 1;
if (dp[i] > max_subsequence) {
max_subsequence = dp[i];
}
}
return max_subsequence;
}
int max_envelopes(int[][] envelopes, int n) {
bubble_sort(envelopes, n);
var heights = new int[n];
for (var i = 0; i < n; i = i+1;) {
heights[i] = envelopes[i][1];
}
return longest_increasing_subsequence(heights, n);
}
int program(int argc, string[] argv) {
var envelopes = new int[][] {
new int[] {5, 4},
new int[] {6, 4},
new int[] {6, 7},
new int[] {2, 3}
};
var n = 4;
var res = max_envelopes(envelopes, n);
return res;
}