欢乐的跳
Posted weixin_52282409
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欢乐的跳相关的知识,希望对你有一定的参考价值。
菜鸟小白C语言写欢乐的跳【随缘学习】
题目所述基本内容
一个nn个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了[1,n-1]之间的所有整数,则称之符合“欢乐的跳”,如数组1 4 2 31423符合“欢乐的跳”,因为差的绝对值分别为:3,2,13,2,1。
给定一个数组,你的任务是判断该数组是否符合“欢乐的跳”。
输入格式
每组测试数据第一行以一个整数n(1 ≤ n ≤ 1000)开始,接下来n个空格隔开的在[-10^8 , −10^8]之间的整数。
输出格式
对于每组测试数据,输出一行若该数组符合“欢乐的跳”则输出"Jolly",否则输出"Not jolly"。
*输入输出样例
解题关键
***对于此题理解题目很关键,题目过于抽象,可以通过数学中的集合与映射的相关知识将其简单化,让题目意思变得通俗易懂。可以将[1,n-1]设为集合A,将数组两个连续元素之间差的绝对值设为集合B,即A集合的元素在B集合中能找到一一对应的元素,就利用映射。
代码
#include<stdio.h>
int main()
{ int m,i,a[1000],x,t,j;
x=0;
scanf("%d",&m);
for(i=1; i<=m; i++)
{
scanf("%d",&a[i]);
}
for(i=1; i<=m; i++)
{ a[i]=a[i]-a[i+1];
if(a[i]<0) {
a[i]=-a[i];
}
}
for(i=1; i<=m-1; i++)
{ for(j=1; j<=m-i; j++)
{ if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1; i<=m; i++)
{
if(a[i]==i) x++;
}
if(m-1==x) {
printf("Jolly");
}
else printf("Not jolly");
}
结束语
好兄弟好兄弟,留下你的关注和点赞,666走一波!!!!!
以上是关于欢乐的跳的主要内容,如果未能解决你的问题,请参考以下文章
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段