pta L1-071 前世档案
评价:非常之狗血一道题,用模拟做会非常非常非常麻烦,别问我是怎么知道的┮﹏┮
这道题用二叉树性质好像非常好做,这里在复习一下二叉树的性质:
1、满足本身是有序树。
2、树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2。
3、二叉树具有以下几个性质:
a:二叉树中,第 i 层最多有 2的i-1次方个结点。
b:如果二叉树的深度为 K,那么此二叉树最多有 2的k次方-1 个结点。
c:二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。
这里也有完美二叉树:
1.满二叉树中第 i 层的节点数为 2的i-1 次方个。
2.深度为 k 的满二叉树必有 2k次方-1 个节点 ,叶子数为 2的k-1次方。
3.满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层。
4.具有 n 个节点的满二叉树的深度为 log2(n+1)。
很显然,这道题就是一颗满二叉树,利用了上面划线的性质;
Talk is cheap. Show me the code.
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 int main() 5 { 6 cin>>n>>m; 7 getchar(); 8 for(register int i=1;i<=m;i++) 9 { 10 string s=""; 11 int cnt=1; 12 getline(cin,s); 13 for(int j=0;j<n;j++) 14 { 15 if(s[j]=='n') 16 cnt+=pow(2,n-1-j);//二叉树性质计算 17 } 18 cout<<cnt; 19 if(i<m) 20 cout<<endl; 21 } 22 23 return 0; 24 }
还是咱太菜了
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16159916.html