问题标题: 酷町堂:1059 邻居的神奇差值

0
0
已解决
胡景波
胡景波
中级光能
中级光能

1059   邻居的神奇差值经验值:1200

题目描述 Description

生活中从来不缺少美,对任何事,如果仔细思考,就可能从中发现意想不到的神奇之处。序列也不例外,一个看似毫无相关的序列,其中可能会蕴含无穷的奇妙。
若一个长度为N(N>0)的整型序列,其相邻两数之差的绝对值按从小大到的顺序排列起来,正好为1,2,3,……,N-1,则称该序列的邻居具有神奇的差值。如{8 5 7 3 4},该序列的相邻差为 3 2 4 1,则该序列的邻居具有神奇的差值。且任何只有一个整数的序列一定具有神奇差值。
现给定一个长度为N的整型序列,请判断该序列的邻居是否具有神奇的差值。

输入描述 Input Description

输入为一两行:
第一行为正整数N(N ≤ 100),为序列的长度;
第二行为N个整数,依次为序列中各元素,且各整数的绝对值均不超过10000。

输出描述 Output Description

输出为一行,若该序列的邻居具有神奇的差值,则输出“Amazing”,否则输出“Normal”。

样例输入 Sample Input

样例一: 5 8 5 7 3 4 ————————————————————————————————————————————— 样例二: 5 8 5 7 4 4

样例输出 Sample Output

样例一: Amazing ————————————————————————————————————————————— 样例二: Normal

77分:

#include<iostream>

#include<algorithm>

#include<cmath>

using namespace std;

int n;

int a[100005],b[100005];

int main(){

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

for(int i=1;i<=n;i++){

b[i]=abs(a[i]-a[i+1]);

}

sort(b+1,b+n+1);

bool f=false;

for(int i=1;i<=n-1;i++){

if(b[i]==i){

f=true;

}

else{

cout<<"Normal";

return 0;

}

}

if(f==true){

cout<<"Amazing";

}

return 0;

}


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

b数组要从2开始计算,不然会把0计算进去

所以应该这样改

for(int i=1;i<=n;i++){
     if(i!=1) b[i]=abs(a[i]-a[i-1]);
}

之后排序

判断

循环2至n{
        if(b[i]!=++cnt){
            输出Normal;
            return 0;
        }
    }
    输出Amazing\n;

 

我要回答