题意:问给定的字符串是否是镜面对称
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define rep(i, j, k) for(int i = j; i <= k; i++)
using namespace std;
bool fuck (char ch)
{
return ch == 'o' || ch == 'v' || ch == 'w' || ch == 'x' || ch == 'A'
|| ch == 'H' || ch == 'I' || ch == 'M' || ch == 'O' || ch == 'T' || ch == 'U' || ch == 'V' || ch == 'W' || ch == 'X' || ch == 'Y';
}
int main ()
{
string s;
cin >> s;
{
string s1 = s;
int n = s.length ();
for (int i = 0; i < n; i++)
s1[i] = s[n - 1 - i];
//cout << s1 << endl;
rep (i, 0, n - 1)
if (s1[i] == 'b')
s1[i] = 'd';
else
if (s1[i] == 'd')
s1[i] = 'b';
else
if (s1[i] == 'p')
s1[i] = 'q';
else
if (s1[i] == 'q')
s1[i] = 'p';
else
if (fuck (s1[i]))
s1[i] = s1[i];
else
s1[i] = ' ';
if (s == s1)
printf ("TAK\n");
else
printf ("NIE\n");
//cout << s1 << endl;
}
return 0;
}
直接做就行。。