1 条题解

  • 0
    @ 2025-11-16 16:02:38
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string input_order, output_order;
        int n;
        
        // 读入输入输出颜色顺序
        cin >> input_order >> output_order;
        
        // 读入序列长度和序列
        cin >> n;
        int arr[1000];  // 存储输入序列
        for (int i = 0; i < n; i++) {
            cin >> arr[i];
        }
        
        // 建立映射关系:输出端位置 -> 输入端位置
        int mapping[8];
        for (int i = 0; i < 8; i++) {
            // 输出端第i个位置的颜色
            char color = output_order[i];
            // 找到这个颜色在输入端的位置
            for (int j = 0; j < 8; j++) {
                if (input_order[j] == color) {
                    mapping[i] = j;  // 输出端i位置对应输入端j位置
                    break;
                }
            }
        }
        
        // 处理每一组8个数字
        int group_count = n / 8;  // 组数
        for (int g = 0; g < group_count; g++) {
            int temp[8];  // 临时存储当前组的8个数字
            
            // 复制当前组的数据
            for (int i = 0; i < 8; i++) {
                temp[i] = arr[g * 8 + i];
            }
            
            // 根据映射关系重新排列
            for (int i = 0; i < 8; i++) {
                arr[g * 8 + i] = temp[mapping[i]];
            }
        }
        
        // 输出结果
        for (int i = 0; i < n; i++) {
            cout << arr[i];
            if (i < n - 1) {
                cout << " ";
            }
        }
        cout << endl;
        
        return 0;
    }
    
    

    河南省X组第二轮T2 【接网线(line)】

    信息

    ID
    1358
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    2
    已通过
    2
    上传者