P1152 欢乐的跳-C语言
1、题目
2、解题过程
结果:
代码:
//洛谷 P1152 欢乐的跳
#include <stdio.h>
#define NUM 1000//1≤n≤1000
int main() {
int n;//n个元素
int a[NUM];//n个元素的整数数组
int d_value[NUM] = { 0 };
int j = 0;
int i;
int temp;
scanf("%d", &n);
for (i = 0; i < n; i++) {
if (i == 0) {
scanf("%d", &a[i]);
}
else {
scanf("%d", &a[i]);
temp= a[i] - a[i - 1];
d_value[j] = temp > 0 ? temp : (-1 * temp);//绝对值
j++;
}
}
/*
printf("差值数组的数据为:\n");
for (i = 0; i < n-1; i++) {//之后n-1个差值数
printf(" %d ", d_value[i]);
}*/
int k = n - 1;
//利用冒泡排序判断是否有重复的值,并判断两端的端点
for (i = 0; i < k-1 ; i++) {//进行k-1次冒泡
for (j = 1; j <k; j++) {
if (d_value[j] == d_value[j - 1]) {
printf("Not jolly");//不符合欢乐的跳
return 0;
}
else if (d_value[j - 1] > d_value[j]) {
temp = d_value[j-1];
d_value[j-1] = d_value[j];
d_value[j] = temp;
}
}
}
/*
printf("\n排序后的差值数组的数据为:\n");
for (i = 0; i < n-1; i++) {
printf(" %d ", d_value[i]);
}
printf("\n");*/
if (d_value[0] != 1) {
printf("Not jolly");//不符合欢乐的跳
}
else if(d_value[n - 2] != (n - 1)){
printf("Not jolly");//不符合欢乐的跳
}
else {
printf("Jolly");//符合欢乐的跳
}
/*
if ((d_value[0] == 1) & (d_value[n - 2] == n - 1)) {
printf("Jolly");//符合欢乐的跳
}
else {
printf("Not jolly");//不符合欢乐的跳
}*/
return 0;
}