就是这样的,没什么问题
如果桌子上有一把长短不一的面条,此时你将面条立起来,下端平放在桌面上,此时你用手掌在空中从上往下缓慢移动,慢慢的,你的手掌触碰到了一根面条(这根面条是最高的),你将这根面条抽走(抽走的面条当然想怎么吃就怎么吃),手继续慢慢向下移动,这时,你又碰到了倒数第二高的面条,你又将其抽走。
算法中,我们用一个数模拟手,每次-1,为了不至于手掌无处安放,我们将手直接放在最高的面条的顶端。
但其实这道题就是手每次向下挪一位,然后看看有木有面条~
我一开始看成了选择排序
但是
写起来:“这不就是弱化版的选择排序么?”
无语
十分短小的代码
code(c++)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num[6] = {6, 5, 4, 3, 2, 1};
int tmp[6] = {0};
int large = * max_element(num, num + 6);
for (int j = 5; j >= 0; j--) {
for (int i = 0; i < 6; i ++ )
if (num[i] == large) {
tmp[j] = num[i];
num[i] = 0;
}
large -- ;
}
for (int i = 0; i < 6; i ++ ) cout << tmp[i];
return 0;
}