n
個數字1~n-1
(順序沒差)Jolly
Not jolly
n
後用 for
迴圈分別存入整數陣列裡
int n;
while(scanf("%d", &n) != EOF){
int arr[3000] = {0};
for(i = 0; i < n; i++){
scanf("%d", &arr[i]);
}
}
int S[3000] = {0};
for(i = 0; i < n - 1; i++){
S[i] = abs(arr[i] - arr[i + 1]);
}
for(i = 0; i < n - 1; i++){
for(j = i + 1; j < n - 1; j++){
if(S[i] > S[j]){
temp = S[i];
S[i] = S[j];
S[j] = temp;
}
}
}
for
迴圈檢查是否 1~n-1
都有對應的差值;若有不同便跳出迴圈,根據 flag
的狀態輸出結果
for(i = 0; i < n - 1; i++){
if(S[i] != i + 1){
flag = true;
break;
}
}
if(flag){
printf("Not jolly\n");
}
else{
printf("Jolly\n");
}
#include<stdio.h>
#include<stdbool.h>
int main(){
int n;
int i, j;
bool flag;
int temp;
while(scanf("%d", &n) != EOF){
int arr[3000] = {0};
for(i = 0; i < n; i++){
scanf("%d", &arr[i]);
}
int S[3000] = {0};
for(i = 0; i < n - 1; i++){
S[i] = abs(arr[i] - arr[i + 1]);
}
for(i = 0; i < n - 1; i++){
for(j = i + 1; j < n - 1; j++){
if(S[i] > S[j]){
temp = S[i];
S[i] = S[j];
S[j] = temp;
}
}
}
flag = false;
for(i = 0; i < n - 1; i++){
if(S[i] != i + 1){
flag = true;
break;
}
}
if(flag){
printf("Not jolly\n");
}
else{
printf("Jolly\n");
}
}
return 0;
}
sort
加快速度;vector
或 map
等 STL 快速查找與動態儲存#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
int i;
bool flag;
int temp;
while(cin >> n){
vector<int> v;
vector<int> d;
for(i = 0; i < n; i++){
cin >> temp;
v.emplace_back(temp);
}
for(i = 0; i < n - 1; i++){
d.emplace_back(abs(v[i] - v[i + 1]));
}
sort(d.begin(), d.end());
flag = false;
for(i = 0; i < n - 1; i++){
if(d[i] != i + 1){
flag = true;
break;
}
}
if(flag){
cout << "Not jolly\n";
}
else{
cout << "Jolly\n";
}
}
return 0;
}