问题标题: 1059

0
0
已解决
王睿卿
王睿卿
高级守护
高级守护
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[n];
    int flag=1;
    int i,j;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int x[100];
    for(i=0;i<n-1;i++)
    {
        if(abs(a[i])<abs(a[i+1]))
        {
            x[i]=abs(a[i+1])-abs(a[i]);
        }
        else
        {
            x[i]=abs(a[i])-abs(a[i+1]);
        }
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(x[i]>x[j])
            {
                swap(x[i],x[j]);
            }
        }
    }
    for(i=0;i<n-2;i++)
    {
        if(x[i]+1==x[i+1])
        {
            flag=1;
        }
        else
        {
            flag=0;
        }
        if(flag==0)
        {
            cout<<"Normal";
            return 0;
        }
    }
    cout<<"Amazing";
    return 0;
}

 


0
已采纳
被禁言 贾敬波
贾敬波
高级守护
高级守护

出现了两个问题:

第一:你的排序写的不对啊,前面x[i]是0到n-1的,排序时候的是0到n的;

第二:判断flag的时候不需要判断等于1的情况啊,只要判断等于0就够了。

是否可以考虑写成以下情况

 if(x[i]+1!=x[i+1])
 {
      cout<<"Normal";
      return 0;
 }

 

0
张睿杰
张睿杰
初级天翼
初级天翼

这道题比较复杂

你错的太多了,不好发

排序是0,n-2(调用时)

然后判断这个数组从小到大超值是否是从1..2..3..4

这种规律

0
梁锦程
梁锦程
高级光能
高级光能
 for(i=1;i<n;i++)
        b[i]=abs(a[i]-a[i+1]);
    sort(b+1,b+n);
    for(i=1;i<n;i++)
        if(b[i]!=i)
        {
            cout<<"Normal";
            return 0;
        }
    cout<<"Amazing";

 

0
我要回答