- 字符串还原
- 2017-02-20 17:53:45 @
我比较的方式比较麻烦,就是拿两个字符串比较,如果二者差2k那么另外一个倒序输出,但是#6一直过不了啊,不知道是我什么没有考虑到还是数据存在多解??请大佬指教!
#include<iostream>
#include<stdio.h>
using namespace std;
char f1[10005],f2[10005],f3[10005];
int n;
int judge(char *a,char *b,int x)
{
char y;
for(int i=0;i<n;i++)
{
if(a[i]+2*x<'a')
y=a[i]+2*x+26;
else if(a[i]+2*x>'z')
y=a[i]+2*x-26;
else y=a[i]+2*x;
if(y!=b[i])
{
return 0;
}
}
return 1;
}
int main(void)
{
cin>>n;
scanf("%s",f1);
scanf("%s",f2);
scanf("%s",f3);
for(int i=-6;i<=6;i++) //因为两个数组不知道哪个大哪个小所以k从-6开始试
{
if(judge(f1,f2,i))
{
for(int j=n-1;j>=0;j--)
cout<<f3[j];
break;
}
if(judge(f1,f3,i))
{
for(int j=n-1;j>=0;j--)
cout<<f2[j];
break;
}
if(judge(f2,f3,i))
{
for(int j=n-1;j>=0;j--)
cout<<f1[j];
break;
}
}
}
2 条评论
-
沉江底 LV 9 @ 2017-02-20 20:02:28
而且用一个子条件去解决这题竟然过了9个点???orz
-
2017-02-20 19:38:01@
好吧,我知道怎么回事了:就是有一种情况是两个字符串相差2k的同时还要保证另外的一个字符串减去k需要与其中一个字符串匹配,这点我没有考虑到。。。
- 1