题目描述 已知字符A.B,C。每个字符都有自己的权值q。 现不知道权值q,只知道A,B,C的三次比较结果。 输入描述: 输入三个字符串表示三次比较的结果 输出描述: 输出结果,如果不存在输出”Impossible” 示例 示例1 输入 A 输出 ACB 用c++编写
时间: 2023-02-05 21:50:01 浏览: 127
霍夫曼编码,对输入的字符集和各个字符对应的权值求出每个字符的霍夫曼编码。
5星 · 资源好评率100%
如果想要用代码来解决这个问题,那么可以使用如下的思路:
1. 先读入三个字符串,表示三次比较的结果。
2. 对于每一次比较的结果,如果是字符 A 比字符 B 大,则记录一个正数;如果是字符 B 比字符 A 大,则记录一个负数;如果相等,则记录零。
3. 对于三次比较的结果,如果有两个正数和一个负数,则可以确定字符 A 的权值最大;如果有两个负数和一个正数,则可以确定字符 C 的权值最大;如果其他情况,则输出 Impossible。
4. 如果可以确定字符 A 或字符 C 的权值最大,则输出 A 或 C 的排列顺序;如果都不能确定,则输出 Impossible。
下面是参考代码:
```
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1, str2, str3;
cin >> str1 >> str2 >> str3;
int a = 0, b = 0, c = 0;
for (int i = 0; i < str1.size(); i++)
{
if (str1[i] == 'A')
{
if (str2[i] == 'B') a++;
if (str2[i] == 'C') a--;
}
if (str1[i] == 'B')
{
if (str2[i] == 'A') b--;
if (str2[i] == 'C') b++;
}
if (str1[i] == 'C')
{
if (str2[i] == 'A') c
阅读全文