- 字符串还原
- 2017-04-29 23:56:46 @
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int n,i,j,l,s,x,q,o;
int a[10005];
string st[5];
int main()
{
cin>>n;
cin>>st[1]>>st[2]>>st[3];
for(i=1;i<3&&o==0;i++)
for(j=i+1;j<=3;j++)
{
for(l=0;l<n;l++) //拿出任意两组加密字符串,求各个位上字母ACALL码之差
//如果差相等,则这两组字符串为被第二,三种加密方法加密
//倒序输出剩下一组即可
{
if(st[i][l]-st[j][l]<0)
a[l]=26-abs(st[i][l]-st[j][l]);
else
a[l]=st[i][l]-st[j][l];
if(l!=0)
if(a[l]==a[l-1]) s++;
else break;
}
if(s==n-1)
{
if(i==1&&j==2) x=3;
if(i==1&&j==3) x=2;
if(i==2&&j==3) x=1;
for(q=n-1;q>=0;q--) cout<<st[x][q];
o=1;
break;
}
s=0;
}
return 0;
}