一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对
值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值
分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一
个程序判定给定序列是N个元素相邻元素的差的绝对值经过排序后正好是从1到(n-1)
我们标记”相邻元素的差的绝对值”, 1~n-1共n-1个数值出现次数有且仅有一次
• 准备1~n-1共n-1桶
• 对于某个”相邻元素的差的绝对值”
• 如果大于等于n超出范围,结束
• 如果已经标记过,结束
• 否则标记之
• 若成功标记n-1桶,完成
#include <iostream>
using namespace std;
int main()
{
int n;cin>>n;
int a[3005];
for(int i=1;i<=n;i++)
cin>>a[i];
//标记数组book,一开始设置为0,book[i]=0代表绝对值i没出现过
int book[3005]={0};
for(int i=1;i<=n-1;i++){
int num=a[i]-a[i+1];
if(num<0) num=-num;
if(num>n-1||num=0){
cout<<"Not jolly";//绝对值超出范围
return 0;
}
else{
if(book[num]==1){
cout<<"Not jolly";//绝对值只能出现一次
return 0;
}
else
book[num]=1;
}
}
cout<<"Jolly";
return 0;
}
存在“有趣的跳跃”