没有什么高大上的解法,就是发现一个很奇妙的规律:
‘是’则是的值为0。
‘否’ 都代表一个值,(如下图)比如说第一层 的否:2^(n-1),第二层:2^(n-2)依次往下,第 j 层则为2的n-j次方。
最后动手算出最后的值你就会发现 只要+1你就可以得到正确答案。
AC代码 :
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,peo,num=1;
char ch[33];
cin>>n>>peo;
for(int i=0;i<peo;i++)
{num=1;
for(int j=1;j<=n;j++)
{
cin>>ch[j]; //这里可以改进,懒得改了
if(ch[j]=='y') ; //如果答案为是则值不变
else num+=pow(2,n-j); //答案为否则加上2^(n-j)
}
cout<<num<<endl;
}
return 0;
}
结果: