1 条题解

  • 0
    @ 2023-1-16 15:09:53

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

    在输入一长串的时候,写 A+1A+1 就能从 A[1]A[1] 开始输入了,这很贴合人的语言习惯,但问题是这样就不能使用 strlen 了,所以使用了 math 来计算 2n2^n

    #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;
    }
    
    

    转自 luogu 题解 https://www.luogu.com.cn/blog/_post/2759

    • 1

    信息

    ID
    32
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者