模拟题
每次找到错牌的键直接交换即可
#include<bits/stdc++/h>
using namespace std;
int len[20];
char s[120][120];
int sum;
char key[120][120]={{'1','2','3','4','5','6','7','8','9','0','-','='},{'q','w','e','r','t','y','u','i','o','p','[',']','\\'},{'a','s','d','f','g','h','j','k','l',';','\''},{'z','x','c','v','b','n','m',',','.','/'}};
int check(int a,int b,int c)
{
for(int i=a;i<4;i++)
for(int j=0;j<len[i];j+=2)
{
if(s[i][j]==key[a][c])
{
char t=s[i][j];
s[i][j]=s[a][b];
s[a][b]=s[i][j];
}
}
return 1;
}
int main()
{
int T;
scanf("%d",&T);
getchar();
for(int kase=1;kase<=T;kase++)
{
for(int i=0;i<4;i++)
{
gets(s[i]);
len[i]=strlen(s[i]);
}
sum=0;
for(int i=0;i<4;i++)
{
int k=0;
for(int j=0;j<len[i];j+=2)
{
if(s[i][j]!=key[i][k])
sum+=check(i,j,k);
k++;
}
}
printf("%d\n",sum);
}
return 0;
}