请问支撑数的支撑数这道题用c++怎么写?

staygone 2021-08-12 11:14:26

题目:在已知的一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大。如:1 3 2 12 1 5 3 10 7 9 8 23 85 43,这些数中被标注红色字体的都是支撑数。将这些支撑数重新排列成一组数:3 12 5 10 9 85,其中被标注蓝色字体的数又是新数列中的支撑数,将蓝色数重新排列后又得到一组新数:12 10,这时再也找不到支撑数了,最后将12 10输出来。

...全文
1993 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Steven___xu 2023-01-30
  • 打赏
  • 举报
回复


```c++
#include <algorithm>
#include <iostream>
#include <cmath>

using namespace std;

constexpr int MST = 1005;
int n, ans[MST], tmp[MST], num, tmpNum;
bool flag = false, inFlag;

int main(int argc, char* argv[]) {
    ios::sync_with_stdio(false);
    cin >> n;
    for (int i = 0; i < n; ++i)
        cin >> ans[i];
    tmpNum = n;
    int temp = 0;
    while (true) {
        ++temp;
        flag = false, num = 0;
        for (int i = 1; i < tmpNum - 1; ++i) {
            if (ans[i] > ans[i + 1]
             && ans[i] > ans[i - 1])
                tmp[num++] = ans[i], flag = true;
        }
        if (flag) {
            for (int i = 0; i < 1005; ++i)
                ans[i] = 0;
            for (int i = 0; i < num; ++i)
                ans[i] = tmp[i];
            for (int i = 0; i < 1005; ++i)
                tmp[i] = 0;
                inFlag = true;
        }
        if (!flag)
            break;
        tmpNum = num;
    }
    if (temp < 2) {
        cout << "no";
        return 0;
    }
    for (int i = 0; ans[i] != 0; ++i)
        cout << ans[i] << ' ';
    return 0;
}

```

Steven___xu 2023-01-30
  • 打赏
  • 举报
回复

#include
#include
#include

using namespace std;

constexpr int MST = 1005;
int n, ans[MST], tmp[MST], num, tmpNum;
bool flag = false, inFlag;

int main(int argc, char* argv[]) {
ios::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; ++i)
cin >> ans[i];
tmpNum = n;
int temp = 0;
while (true) {
++temp;
flag = false, num = 0;
for (int i = 1; i < tmpNum - 1; ++i) {
if (ans[i] > ans[i + 1]
&& ans[i] > ans[i - 1])
tmp[num++] = ans[i], flag = true;
}
if (flag) {
for (int i = 0; i < 1005; ++i)
ans[i] = 0;
for (int i = 0; i < num; ++i)
ans[i] = tmp[i];
for (int i = 0; i < 1005; ++i)
tmp[i] = 0;
inFlag = true;
}
if (!flag)
break;
tmpNum = num;
}
if (temp < 2) {
cout << "no";
return 0;
}
for (int i = 0; ans[i] != 0; ++i)
cout << ans[i] << ' ';
return 0;
}

staygone 2022-07-11
  • 打赏
  • 举报
回复

额,我也不知道

星星来啦 2022-07-11
  • 打赏
  • 举报
回复

答案呢?

smz7161 2021-11-05
  • 打赏
  • 举报
回复 1

问我我也不知道

staygone 2021-11-06
  • 举报
回复
@smz7161 没什么……

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧