题目描述:
思路: 照我以前可能就会傻傻的去想怎么实现二叉树…也许是现在思维成熟了点,便能看出其实这就是类似于二分原理的水题。首先能够知道结论的总数,每次"y"和"n"的选择就像二分一样对半砍的操作,所以简单模拟下就行啦!
AC代码:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5+10;
int n, m, sum;
string s;
signed main()
{
cin >> n >> m;
sum = pow(2, n);
// cout << "sum: " << sum << endl;
while(m --){
cin >> s;
int l = 1, r = sum;
for(int i = 0; i < n; i ++){
int mid = (l+r)/2;
if(s[i]=='y') r = mid-1;
else l = mid+1;
}
cout << l << endl;
}
return 0;
}