欢乐的跳

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走一波!!!!!

以上是关于欢乐的跳的主要内容,如果未能解决你的问题,请参考以下文章

欢乐的跳——快看,远处的学妹正向你慢慢走来

欢乐的跳——快看,远处的学妹正向你慢慢走来

Node.js JavaScript 片段中的跳过代码

欢乐五子棋辅助

vue使用vue构建多页面应用

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段