7. 請寫出以下 C 語言程式碼執行結果? _____
誰能看懂到底是 1 还是l (L)?
#include <iostream>
using namespace std;
int arr[] = {2, 1, 6, 3, 5, 4, 8, 7, 9}, B[9], len;
int T(int w) {
int m, l=0, r=len-1;
while (l <= r) {
m = (l+r)/2;
if (B[m] > w) r = m-l;
else if (B[m] < w) l = m+1;
else return m;
}
return (B[m]>w) ? m : m+1;
}
int S(int n) {
len = 1;
B[0] = arr[0];
int i, pos = 0;
for (i=1; i<n; ++i) {
if (arr[i] > B[len-1]) {
B[len] = arr[i];
++len;
}
else {
pos = T(arr[i]);
B[pos] = arr[i];
}
}
return len;
}
int main() {
printf("%d\n", S(9));
return 0;
}