欢乐的跳
发布日期:2021-05-15 01:06:10 浏览次数:23 分类:精选文章

本文共 1061 字,大约阅读时间需要 3 分钟。

根据题目要求,我们需要判断给定的数组是否符合“欢乐的跳”条件。具体来说,数组中的每一对连续元素之间的差的绝对值必须包含从1到n-1的所有整数。以下是具体的解决方案。

方法思路

  • 输入读取:读取数组长度n和数组元素。
  • 差值计算:遍历数组,计算每一对连续元素之间的差的绝对值。
  • 集合存储差值:将所有差值存储在一个集合中,以便快速查找。
  • 检查条件:检查集合中是否包含从1到n-1的所有整数。如果包含,则数组符合“欢乐的跳”;否则,不符合。
  • 解决代码

    #include 
    #include
    using namespace std;
    int main() {
    int n, m = 1;
    while (true) {
    // 读取n
    cin >> n;
    if (n == 0) {
    // 题目要求n >=1
    cout << "Not jolly" << endl;
    return 0;
    }
    vector
    arr(n);
    // 注意n的情况和数组长度是否正确
    if (n == 1) {
    // 当n=1时,不需要比较
    cout << "Jolly" << endl;
    return 0;
    }
    bool possible = true;
    unordered_set
    diff_set;
    for (int i=0; i
    > arr[i];
    }
    // 计算差的绝对值,并检查是否有重复,也记录到diff_set
    for (int i=0; i

    代码解释

  • 读取输入:首先读取数组的长度n,然后读取数组元素。
  • 计算差值:对于数组中的每一对连续元素,计算它们的差的绝对值,并将这些绝对值存储在一个集合中。
  • 检查条件:检查集合中是否包含从1到n-1的所有整数。如果有所有数,则输出“Jolly”,否则输出“Not jolly”。
  • 这个方法通过使用集合来快速检查所有必要的整数是否存在,从而确保正确性和效率。

    上一篇:奶牛音量问题
    下一篇:网络 基础1

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年05月03日 03时33分35秒