有趣的跳跃 wa70分

6. 有趣的跳跃

题目ID:9551必做题100分

最新提交:

Wrong Answer

70 分

历史最高:

Wrong Answer

70 分

时间限制: 100ms

空间限制: 131072kB

题目描述

题目描述:

在一个长度为n的数字序列中,如果相邻元素差的绝对值经过升序排序后正好是1~n-1,则认定该序列存在“有趣的跳跃”。例如:数字序列1、4、2、3的相邻数字差的绝对值分别为3、2、1,排序后是1、2、3,说明该序列存在着“有趣的跳跃”。现在给你一个序列,请你判断该序列是否存在“有趣的跳跃”。

输入格式:

第1行为一个整数n(不超过100000)。

接下来一行为n个不超过100000的整数。

输出格式:

若存在,输出“yes”,否则输出“no”。

样例输入

4 1 4 2 3

样例输出

yes

约定:

1<=n<=100000

#include <bits/stdc++.h>

using namespace std;

int main(){
  int n;
  cin >> n;
  int x[n],y[n];
  for(int i=0;i<n;i++){
    cin >> x[n];
  }
  for(int i=0;i<n;i++){
    y[n]=abs(x[n]-x[n+1]);
  }
  int sz=sizeof(y)/sizeof(y[0]);
  stable_sort(y,y+sz);
  for(int i=1;i<n;i++){
    if(y[i-1]==i){
      continue;
    }
    else{
      cout << "no" << endl;
      return 0;
    }
  }
  cout << "yes" << endl;
  return 0;
}

TEST 8,9,10没过!求救!

#include <bits/stdc++.h>

using namespace std;

int main(){
  int n;
  cin >> n;
  int x[n],y[n];
  for(int i=0;i<n;i++){
    cin >> x[n];
  }
  for(int i=0;i<n;i++){
    y[i]=abs(x[i]-x[i+1]);
  }
  stable_sort(y,y+n);
  for(int i=1;i<n;i++){
    if(y[i-1]==i){
      continue;
    }
    else{
      cout << "no" << endl;
      return 0;
    }
  }
  cout << "yes" << endl;
  return 0;
}

我推荐你用模拟操作一下

1 个赞

我就这么过得

过了吗?(过了给我一个解决方案呗) :grin:

万分感谢!