题目
题目描述
对于一个连续正整数组成的序列,可以将其拼接成一个字符串,再将字符串里的部分字符打乱顺序。如序列8 9 10 11 12,拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1。现给定一个按如上规则得到的打乱字符的字符串,请将其还原成连续正整数序列,并输出序列中最小的数字。
输入描述
输入一行,为打乱字符的字符串和正整数序列的长度,两者间用空格分隔,字符串长度不超过200,正整数不超过1000,保证输入可以还原成唯一序列。
输出描述
输出一个数字,为序列中最小的数字。
示例1
输入
19801211 5
输出
8
示例2
输入
432111111111 4
输出
111
思路
暂时只想到暴力匹配
代码
#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{string str;int n;cin >> str >> n;vector<int> cnt(10, 0);for (char c : str){cnt[c - '0']++;}for (int i = 0; i <= 1000 - n; i++){string s;for (int j = 0; j < n; j++){s += to_string(i + j);}vector<int> tmpCnt(10, 0);for (char c : s){tmpCnt[c - '0']++;}if (cnt == tmpCnt){cout << i << endl;break;}}return 0;
}