1 条题解
-
0
#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; }
信息
- ID
- 1358
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 2
- 上传者