zoukankan      html  css  js  c++  java
  • P1087 FBI树

    #include<stdio.h>
    #include<math.h>
    char A[1025];
    void work(int low, int up)
    {
        int mid = (low+up)/2;
        if (low!=up){
            work(low, mid);
            work(mid+1,up);
        }
        int i,a=0,b=0;
        for (i=low;i<=up;i++)
            if (A[i]=='0') a++;
            else b++;
        if (a&&b) printf("F");
        else if (a) printf("B");
        else printf("I");
    }
    int main()
    {
        int n;
        scanf("%d", &n);
        scanf("%s", A+1);
        work(1, pow(2,n));
        return 0;
    }
    

      

    算法

    二分

    思路

    递归即可。跟二分查找的思想有点像。想起以前学长跟我说的,很多树的题目事实上根本不用把树建立出来,虽然当时觉得这个思想很惊奇,但现在自己也算真正的理解了这句话了。

    树的遍历

    前序

    preOrderParse(int n) {
        if(tree[n] == NULL)
            return ; // 如果这个节点不存在,那么结束 
    
        cout << tree[n].w ; // 输出当前节点内容     
        preOrderParse(tree[n].leftChild); // 递归输出左子树 
        preOrderParse(tree[n].rightChild); // 递归输出右子树 
    }
    

      中序

    inOrderParse(int n) {
        if(tree[n] == NULL)
            return ; // 如果这个节点不存在,那么结束 
    
        inOrderParse(tree[n].leftChild); // 递归输出左子树 
        cout << tree[n].w ; // 输出当前节点内容 
        inOrderParse(tree[n].rightChild); // 递归输出右子树 
    }
    

      后序

    pastOrderParse(int n) {
        if(tree[n] == NULL)
            return ; // 如果这个节点不存在,那么结束 
    
        pastOrderParse(tree[n].leftChild); // 递归输出左子树 
        pastOrderParse(tree[n].rightChild); // 递归输出右子树 
        cout << tree[n].w ; // 输出当前节点内容     
    }
    

      见https://www.cnblogs.com/z-x-y/articles/10004938.html

     代码

  • 相关阅读:
    浅谈java中异常处理
    Android四大组件之BroadcastReceiver
    android基本组件 Button
    Android基本组件TextView和EditView
    Unicode,GBK和UTF8
    记一次生产上的紧急修复之后解疑过程
    使用第三方jar时出现的问题
    码农歌单
    创建servlet程序知识点详解---servlet-day12
    创建servlet程序知识点详解---servlet-day07
  • 原文地址:https://www.cnblogs.com/ruanmowen/p/12899839.html
Copyright © 2011-2022 走看看