【题解】CF2168A1 Encode and Decode (Easy Version)

· · 题解

由于 Codeforces 启用了 Cloudflare 进行全站防护,导致洛谷 RemoteJudge 失效,所以请前往 CF 提交本题。

题目大意

本题是一道通信题,分为编码与解码两个独立阶段。

程序首先在编码阶段读取整数 n 和数组 a,并将其编码为一个仅由小写字母组成的字符串 s。

接着在解码阶段,读取之前输出的字符串 s,解码还原出原始的 n 和数组 a。

两个阶段由题目第一行所输入的 firstsecond 区分。

特别地,这两个部分完全独立运行,彼此间不共享任何数据。

解题思路

我们发现这是一道 Easy Version(简易版)题目且 1 \leq a_i \leq 26,所以我们采用一种直接映射的方法,具体如下。

核心代码如下:

string en(int a[],int n)//编码
{
    string s;
    for(int i=0;i<n;i++)
        s+='a'+a[i]-1;
    return s;
}

int de(const string& s,int a[])//解码
{
    int n=s.size();
    for (int i=0;i<n;i++)
        a[i]=s[i]-'a'+1;
    return n;
}