美团
20*2+30*2+2*30
编程题:
越长越大,所以有12组成。
s%3==0 则结果为 212121…
s%3==1 则结果为1212121…1
s%3==2,则结果为212121…2
void maxNum() {
int s;
cin >> s;
int num = 0;
int len = s / 3;
if (s % 3 == 1) {
for (int i = 0; i < len; i++)
cout << "12";
cout << "1" << endl;
}
else {
for (int i = 0; i < len; i++)
cout << "21";
if (s % 3 == 2)
cout << "2" << endl;
}
}
用map存键值对 <value,index> <script type="math/tex" id="MathJax-Element-1"> </script>
对每个移动的数,在map中找到在它前面的数,index+1
最后把map输出到vector,按index排序
bool mycmp(pair<int, int>a, pair<int, int> b) {
return a.second < b.second;
}
void finalSeq() {
int n, m;
cin >> n >> m;
map<int, int> d;
for (int i = 1; i <= n; i++)
d[i]=i;
int move;
map<int, int>::iterator it = d.begin();
for (int i = 0; i < m; i++) {
cin >> move;
for (it = d.begin(); it != d.end(); it++) {
if (it->second < d[move])
it->second += 1;
}
d[move] = 1;
}
vector<pair<int, int>> v(d.begin(), d.end());
sort(v.begin(), v.end(), mycmp);
for (int i = 0; i < v.size(); i++)
cout << v[i].first << endl;
}