专栏文章

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

CF2168A1题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min6vw9r
此快照首次捕获于
2025/12/01 21:33
3 个月前
此快照最后确认于
2025/12/01 21:33
3 个月前
查看原文
由于 Codeforces 启用了 Cloudflare 进行全站防护,导致洛谷 RemoteJudge 失效,所以请前往 CF 提交本题

题目大意

本题是一道通信题,分为编码与解码两个独立阶段。
程序首先在编码阶段读取整数 n 和数组 a,并将其编码为一个仅由小写字母组成的字符串 s。
接着在解码阶段,读取之前输出的字符串 s,解码还原出原始的 n 和数组 a。
两个阶段由题目第一行所输入的 firstsecond 区分。
特别地,这两个部分完全独立运行,彼此间不共享任何数据。

解题思路

我们发现这是一道 Easy Version(简易版)题目且 1ai261 \leq a_i \leq 26,所以我们采用一种直接映射的方法,具体如下。
  • 编码方式:将每个数字直接映射为对应的字母;
  • 解码方式:将每个字母转换回对应的数字。
核心代码如下:
CPP
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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...