#6的数据有多解吗。。。

我比较的方式比较麻烦,就是拿两个字符串比较,如果二者差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 条评论

  • @ 2017-02-20 20:02:28

    而且用一个子条件去解决这题竟然过了9个点???orz

  • @ 2017-02-20 19:38:01

    好吧,我知道怎么回事了:就是有一种情况是两个字符串相差2k的同时还要保证另外的一个字符串减去k需要与其中一个字符串匹配,这点我没有考虑到。。。

  • 1

信息

ID
1449
难度
6
分类
字符串 | 模拟 点击显示
标签
递交数
6904
已通过
1851
通过率
27%
被复制
9
上传者