2 条题解

  • 0
    @ 2025-10-8 16:51:20
    #include<bits/stdc++.h>
    using namespace std;
    char s[1025];
    void dfs(int l, int r)
    {
        int mid=(l+r)>>1;
        if(l!=r)//二叉树后序遍历:左子树、右子树、根节点 
        {
            dfs(l,mid);//左子树 
            dfs(mid+1,r);//右子树 
        }
        //根节点 
        int sum0=0,sum1=0;
        for(int i=l;i<=r;i++)
        {
            if(s[i]=='0')sum0++;
            else sum1++;
        }
        if(sum0>0&&sum1>0)printf("F");
        else if(sum0>0)printf("B");
        else printf("I");
    }
    int main()
    {
        int n;scanf("%d",&n);
        scanf("%s",s+1);
        dfs(1,(1<<n));
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:51:12
      #include<bits/stdc++.h>
      using namespace std;
      char s[1025];
      void dfs(int l, int r)
      {
          int mid=(l+r)>>1;
          if(l!=r)//二叉树后序遍历:左子树、右子树、根节点 
          {
              dfs(l,mid);//左子树 
              dfs(mid+1,r);//右子树 
          }
          //根节点 
          int sum0=0,sum1=0;
          for(int i=l;i<=r;i++)
          {
              if(s[i]=='0')sum0++;
              else sum1++;
          }
          if(sum0>0&&sum1>0)printf("F");
          else if(sum0>0)printf("B");
          else printf("I");
      }
      int main()
      {
          int n;scanf("%d",&n);
          scanf("%s",s+1);
          dfs(1,(1<<n));
          return 0;
      }
      • 1

      信息

      ID
      114
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      递交数
      127
      已通过
      50
      上传者