OR52. 迷雾
描述
亮亮深吸一口气,打开了地图,地图上写着(X:12,Y:?),这可让亮亮犯了愁,这个问号代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,忽然他在地图背面发现了一串数字,数字下面写着一段话“这只是一个1~n的混乱排列,不用在意第i个值”,亮亮眼前一亮,“这个混乱排列中第i个一定是Y的值!”于是,亮亮开始恢复这个混乱排列。输入描述
每组数据第一行一个整数n(0<n≤25),第二行即现在纸上的数字串输出描述
一行n个空格隔开的整数,为小明写下的排列。示例1
输入:
4 2413
输出:
2 4 1 3
C++ 解法, 执行用时: 2ms, 内存消耗: 380KB, 提交时间: 2020-10-31
#include <iostream> #include <string> #include <vector> using namespace std; int main(void) { int n; string strnub; while (cin >> n >> strnub) { vector<int> record(10, 0); for (int i = 0; i < strnub.size(); i++) { if (record[strnub[i] - '0'] != 0) { string tmp = strnub.substr(i++, 2); cout << tmp << " "; } else { cout << strnub[i] << " "; record[strnub[i] - '0']++; } } cout << endl; } return 0; }
C++14 解法, 执行用时: 2ms, 内存消耗: 380KB, 提交时间: 2020-08-15
#include <iostream> #include <string> #include <vector> using namespace std; int main(void) { int n; string strnub; while (cin >> n >> strnub) { vector<int> record(10, 0); for (int i = 0; i < strnub.size(); i++) { if (record[strnub[i] - '0'] != 0) { string tmp = strnub.substr(i++, 2); cout << tmp << " "; } else { cout << strnub[i] << " "; record[strnub[i] - '0']++; } } cout << endl; } return 0; }