百度部分筆試和麪試題

筆試題3

 

#include <algorithm>
#include <cstdio>


int main() {
  char s[1011];
  // 輸入
  while (scanf("%s", s) != EOF) {
    // 規律打印圖形
    int flag = 1, m = 0, n = 0, a = 0, b = 0, L = strlen(s);
    for (int i = 0; i<L; ++i) {
      if (s[i] == '[') {
        ++a;
        flag = 0;
      } else {
        ++b;
        flag = 0;
      }
      if (a == b&&!flag) {
        flag = 1;
        m = std::max(m, a);
        a = b = 0;
      }
    }
    for (int i = 0; i < L; ++i) {
      if (s[i] == '[') {
        for (int i = 0; i < n-1; ++i) printf(" ");
        if (n != 0) printf("|");
        printf("+");
        for (int i = 0; i < 2*(m-n)-1; ++i) printf("-");
        printf("+");
        if (n != 0) printf("|\n");
        else printf("\n");
        if (s[i + 1] == ']') {
          for (int i = 0; i < n; ++i) printf(" ");
          printf("|");
          for (int i = 0; i < 2*(m-n)-1; ++i) printf(" ");
          printf("|\n\n");
        }
        ++n;
      } else {
        --n;
        if (s[i - 1] == '[') {
          for (int i = 0; i < n; ++i) printf(" ");
          printf("|");
          for (int i = 0; i < 2*(m-n)-1; ++i) printf(" ");
          printf("|\n");
        }
        if (n != 0) {
          for (int i = 0; i < n-1; ++i) printf(" ");
          printf("|");
        }
        printf("+");
        for (int i = 0; i < 2*(m-n)-1; ++i) printf("-");
        printf("+");
        if (n != 0) printf("|\n");
        else printf("\n");
      }
    }
  }
  return 0;
}

 

 

 

面試題2

 

#include <cstdio>
#include <vector>

void quick_sort(std::vector<int> &arr, int l, int r) {
  if (l < r) {
    int i = l, j = r, x = arr[l];
    while (i < j) {
      // 從右邊向前找比x小的數
      while (i < j && x < arr[j]) --j;
      if (i < j) arr[i++] = arr[j];
      // 從左邊向後找比x大的數
      while (i < j && x > arr[i]) ++i;
      if (i < j) arr[j--] = arr[i];
    }
    arr[i] = x;
    quick_sort(arr, l, i);
    quick_sort(arr, i + 1, r);
  }
}
int main() {
  // 輸入
  std::vector<int> arr = {1,2,3,8,7,6,5};

  // 快排
  quick_sort(arr, 0, arr.size()-1);

  // 輸出
  for (auto i: arr) printf("%d", i);
}

 

發佈了81 篇原創文章 · 獲贊 108 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章