直接上代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//就是二进制
int toNum(char c)
{
return c == 'y' ? 0 : 1;
}
int main()
{
string s;
int n, m;
cin >> n >> m;
while (m--)
{
cin >> s;
int ans = 0;
for (int i = 0; i < n; i++)
ans = ans * 2 + toNum(s[i]);
cout << ans + 1 << endl;
}
return 0;
}
当问题数为1时(n==1):y--1 n--1
当问题数为2时(n==2):yy--1 yn--2 ny--3 nn--4
以此类推,可见,将y看做0,n看做1,那么上面的式子可以转化为:
y--0 n--1
yy--00 yn--01 ny--10 nn--11
将二进制转为10进制,也就成了:
y--0=0 n--1=1
yy--00=0 yn--01=1 ny--10=2 nn--11=3
和最后输出的结果相比较,总是相差1,于是直接在输出时+1即可
337

被折叠的 条评论
为什么被折叠?



