qwert1596 2023-07-29 16:48 采纳率: 75%
浏览 4

请问怎样才能使排序正确求答案及注解

赶海咯

描述

小星有一位济南的朋友小Y,最近济南的天气实在太热了,想要来青岛度假,想要去赶海,但是赶海需要知道,涨潮和退潮的情况,所以就让本地人的小星,来调查涨潮和退潮的情况。
不幸的是,小星把每一天调查的数据放在了书房,但是在开窗户的时候,风把数据的纸张吹乱了,幸亏小星还能记得这些数据的特征
他开始测量退潮时的水位,他的第二次测量是涨潮时的水位,之后继续在退潮和涨潮之间交替测量。
所有涨潮测量值都高于所有退潮测量值。
注意到,随着时间的推移,涨潮只会变高,退潮只会变低。
现在请你帮助小星把数据恢复原状吧

输入描述
第一行,输入调查数据的数量
第二行,输入n个数据,表示调查的数据(保证在int范围)

输出描述
输出恢复后的数据顺序,每个数据直接用空格隔开

样例输入 1

8
10 50 40 7 3 110 90 2
样例输出 1

10 40 7 50 3 90 2 110

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> data(n);
    for (int i = 0; i < n; i++) {
        cin >> data[i];
    }

    sort(data.begin(), data.end());

    vector<int> result(n);
    int start = 0, end = n - 1;
    for (int i = 0; i < n; i++) {
        if (i % 2 == 0) {
            result[i] = data[start++];
        } else {
            result[i] = data[end--];
        }
    }

    for (int i = 0; i < n; i++) {
        cout << result[i] << " ";
    }
    cout << endl;

    return 0;
}


  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-29 18:04
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/707844
    • 除此之外, 这篇博客: 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。中的 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      可以利用面向对象的思想去解决问题,先去生产一个水藻类,而每个生成的水藻有自己的days属性,每过三天一个水藻就会生出days=1的新水藻,最后再将新水藻的个数全部增加到总到list当中

      package com.yan.test;
      
      import java.util.ArrayList;
      import java.util.List;
      import java.util.Scanner;
      
      public class Test {
          public static void main(String[] args) {
              List<shuizao> list = new ArrayList<>();
              list.add(new shuizao(1));
              System.out.println("输入存活天数");
              Scanner scanner = new Scanner(System.in);
              int nextInt = scanner.nextInt();
              for (int i = 0; i < nextInt; i++) {
                  List<shuizao> addlist = new ArrayList<>();//新增的水藻个数
                  for (shuizao s : list) {
                      if (s.days >= 3)
                          addlist.add(new shuizao(1));
                      s.days++;
                  }
                  list.addAll(addlist);
                  System.out.println("水藻当天的总数:"+list.size()+"\t"+"水藻当天增加的数量:"+addlist.size());
              }
          }
      
      
          //生成的每一个水藻
          static class shuizao{
              int days;
      
              public shuizao(int days){
                  this.days = days;
              }
          }
      }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 7月29日

悬赏问题

  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了