• [HDOJ5444]Elven Postman


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444

    GF长春网赛做过的题,裸的二叉查找树。将数据丢如树内查找值,走到一个左儿子输出一个E,走到一个右儿子输出一个W,走到头后不输出。

    代码:

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 typedef struct Node {
    23     Node* left;
    24     Node* right;
    25     int data;
    26     Node() { left = NULL; right = NULL; }
    27 }Node;
    28 
    29 Node* insert(Node* cur, int data) {
    30     if(cur == NULL) {
    31         cur = new Node();
    32         cur->data = data;
    33         return cur;
    34     }
    35     if(data > cur->data) {
    36         cur->right = insert(cur->right, data);
    37     }
    38     else {
    39         cur->left = insert(cur->left, data);
    40     }
    41     return cur;
    42 }
    43 
    44 void solve(Node* cur, int x) {
    45     if(cur == NULL ||cur->data == x) {
    46         printf("
    ");
    47         return ;
    48     }
    49 
    50     if(x > cur->data) {
    51         printf("W");
    52         return solve(cur->right, x);
    53     }
    54     if(x < cur->data) {
    55         printf("E");
    56         return solve(cur->left, x);
    57     }
    58 }
    59 
    60 int n, q, x, tmp;
    61 
    62 int main() {
    63     //freopen("input", "r", stdin);
    64     int T;
    65     scanf("%d", &T);
    66     while(T--) {
    67         scanf("%d", &n);
    68         Node* root = NULL;
    69         for(int i = 0; i < n; i++) {
    70             scanf("%d", &tmp);
    71             root = insert(root, tmp);
    72         }
    73         scanf("%d", &q);
    74         while(q--) {
    75             scanf("%d", &x);
    76             solve(root, x);
    77         }
    78     }
    79     return 0;
    80 }

    静态分配内存:

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 const int maxn = 1010;
    23 
    24 typedef struct Node {
    25     Node* left;
    26     Node* right;
    27     int data;
    28     Node() { left = NULL; right = NULL; }
    29 }Node;
    30 
    31 Node memory[maxn<<1];
    32 int CNT;
    33 
    34 Node* insert(Node* cur, int data) {
    35     if(cur == NULL) {
    36 //        cur = new Node()
    37         cur = &memory[CNT++];
    38         cur->left = NULL;
    39         cur->right = NULL;
    40         cur->data = data;
    41         return cur;
    42     }
    43     if(data > cur->data) {
    44         cur->right = insert(cur->right, data);
    45     }
    46     else {
    47         cur->left = insert(cur->left, data);
    48     }
    49     return cur;
    50 }
    51 
    52 void solve(Node* cur, int x) {
    53     if(cur == NULL ||cur->data == x) {
    54         printf("
    ");
    55         return ;
    56     }
    57 
    58     if(x > cur->data) {
    59         printf("W");
    60         return solve(cur->right, x);
    61     }
    62     if(x < cur->data) {
    63         printf("E");
    64         return solve(cur->left, x);
    65     }
    66 }
    67 
    68 int n, q, x, tmp;
    69 
    70 int main() {
    71     // freopen("input", "r", stdin);
    72     int T;
    73     scanf("%d", &T);
    74     while(T--) {
    75         CNT = 0;
    76         memset(memory, -1, sizeof(memory));
    77         scanf("%d", &n);
    78         Node* root = NULL;
    79         for(int i = 0; i < n; i++) {
    80             scanf("%d", &tmp);
    81             root = insert(root, tmp);
    82         }
    83         scanf("%d", &q);
    84         while(q--) {
    85             scanf("%d", &x);
    86             solve(root, x);
    87         }
    88     }
    89     return 0;
    90 }
  • 相关阅读:
    喵哈哈村的魔法考试 Round #1 (Div.2) 题解
    Codeforces Round #398 (Div. 2) A. Snacktower 模拟
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) F. Souvenirs 线段树套set
    视频人脸检测——Dlib版(六)
    pip/pip3更换国内源
    OpenCV添加中文(五)
    图片人脸检测——Dlib版(四)
    视频人脸检测——OpenCV版(三)
    Tesseract Ocr文字识别
    图片人脸检测——OpenCV版(二)
  • 原文地址:https://www.cnblogs.com/kirai/p/4907652.html
Copyright © 2020-2023  润新知