HDU 4300 暴力水过

简介:

题意:给出一个26位的字母对照表,再给一段密文+明文(密文按照对照表翻译好的)的字符串,前面是明文后面是密文,而且密文一定完整明文可能不完整。让你把密文还原,还有个条件是密文尽可能短的,先输出密文输出明文。

因为密文完整明文可能不完整所以最短的情况也就行一半密文一半明文了,所以就先把这段文字按照表翻译成明文,在从头与给出的字符串的后半部分比较,对上了就说明是原串在这之前的部分是密文。

qwertabcde

(翻译后)abced.....

这样qwert就是密文,再把qwert翻译成明文就可以了。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define N 100005
char yl[30],data[N],data1[N],data2[N>>1];
int main()
{
    map<char,char>mymap;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        mymap.clear();
        scanf("%s%s",yl,data);
        for(int i=0; i<26; i++)
            mymap[yl[i]]='a'+i;
        int len=strlen(data),len1=len%2?len/2+1:len/2;
        for(int i=0; i<len1; i++)
            data1[i]=mymap[data[i]];
        for(int i=len1,j=0; i<len; i++,j++)
            data2[j]=data[i];
        int j=0;
        for(int i=0; i<len-len1; i++)
        {
            for(j=0; j+i<len-len1; j++)
                if(data1[j]!=data2[i+j])
                    break;
            if(i+j>=len-len1)
                break;
        }
        for(int i=0; i<len-j; i++)
            printf("%c",data[i]);
        for(int i=0; i<len-j; i++)
            printf("%c",mymap[data[i]]);
        puts("");
    }
    return 0;
}


目录
相关文章
|
6月前
【每日一题Day331】LC2560打家劫舍 IV | 二分查找 + 贪心
【每日一题Day331】LC2560打家劫舍 IV | 二分查找 + 贪心
37 0
|
30天前
|
存储
Leetcode第十五题(三数之和)
LeetCode第十五题“三数之和”要求在一个整数数组中找出所有不重复的三元组,使得它们的和为0,通常通过先排序再使用双指针法来解决。
33 0
Leetcode第十五题(三数之和)
|
5月前
【洛谷 P1219】[USACO1.5]八皇后 Checker Challenge 题解(深度优先搜索+回溯法)
**USACO1.5八皇后挑战**是关于在$n\times n$棋盘上放置棋子的,确保每行、每列及两条主对角线上各有一个且仅有一个棋子。给定$6$作为输入,输出前$3$个解及解的总数。例如,对于$6\times6$棋盘,正确输出应包括解的序列和总数。代码使用DFS解决,通过跟踪对角线占用状态避免冲突。当找到所有解时,显示前三个并计数。样例输入$6$产生输出为解的前三个排列和总数$4$。
37 0
|
5月前
|
机器学习/深度学习 算法 C++
【洛谷 P2240】【深基12.例1】部分背包问题 题解(贪心算法)
**深基12.例1**是部分背包问题,$N$堆金币,每堆$(m_i, v_i)$,$T$承重限制。按金币单价降序装包,保证价值最大化。输入$N,T$及每堆金币详情,输出两位小数的最大价值。示例:输入$4,50$,输出$240.00$。AC代码使用C++,通过排序和迭代实现。
64 0
|
6月前
Pseudoprime numbers(POJ-3641 快速幂)
Pseudoprime numbers(POJ-3641 快速幂)
|
6月前
代码随想录 Day40 动态规划08 LeetCodeT198打家劫舍 T213打家劫舍II T337 打家劫舍III
代码随想录 Day40 动态规划08 LeetCodeT198打家劫舍 T213打家劫舍II T337 打家劫舍III
48 0
poj 1185 炮兵阵地 (状态压缩dp)
如果你是刚刚开始做状态压缩dp,我建议你先看看 poj 3254 Corn Fields 这是一道比这一题更简单,更容易入门的题目。 还有在代码中我用了一个很巧妙的方法求一个数二进制数中1的个数 具体请看我博客中 x& (x - 1)==0 这篇文章 链接 。
39 1
poj 1990 MooFest 树状数组
题意就是有N头牛,每头牛都有一个坐标和声调值(x, v),两头牛之间通讯要花费的能量是他们的距离乘以最大的一个音调值,现在要任意两头牛之间都相互通讯一次,求总共需要花费多少能量?
47 0
UVa668 - Parliament(贪心)
UVa668 - Parliament(贪心)
55 0
UVa11420 - Chest of Drawers(动态规划)
UVa11420 - Chest of Drawers(动态规划)
47 0