59 lines
1.4 KiB
Text
59 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;
|
||
|
|
}
|