C++一个 n 个元素的整数数组如果数组两个连续元素之间差的绝对值包括了 1n-1之间的所有整数则称之符合可多的跳跃如数组 1423 符合可多的跳跃因为差的绝对值分别为:321。给定一个数组你的任务是判断该数组是否符合可多的跳跃输入描述:每组测试数据第一行以一个整数 n1 ≤ n ≤ 1000开始接下来 n 个空格隔开的在 -10^810^8 之间的整数。输出描述:对于每组测试数据输出一行若该数组
以下是一个解决这个问题的C++代码示例:
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
bool isJolly(const std::vector<int>& nums) {
int n = nums.size();
std::vector<bool> diff(n-1, false);
for(int i = 1; i < n; i++) {
int absoluteDiff = std::abs(nums[i] - nums[i-1]);
if(absoluteDiff <= 0 || absoluteDiff >= n || diff[absoluteDiff-1]) {
return false;
}
diff[absoluteDiff-1] = true;
}
return true;
}
int main() {
int n;
while(std::cin >> n) {
std::vector<int> nums(n);
for(int i = 0; i < n; i++) {
std::cin >> nums[i];
}
if(isJolly(nums)) {
std::cout << "Jolly" << std::endl;
} else {
std::cout << "Not jolly" << std::endl;
}
}
return 0;
}
该代码首先定义了一个函数isJolly,用于判断给定的数组是否符合“可多的跳跃”。该函数首先创建一个长度为n-1的布尔型数组diff,用于记录数组两个连续元素之间的差的绝对值是否出现过。
然后,遍历数组中的每对连续元素,计算它们之间的差的绝对值,并判断该差的绝对值是否在范围[1, n-1]内。如果不在范围内,或者该差的绝对值已经在diff数组中出现过,则返回false。
如果遍历结束后没有返回false,则说明数组符合“可多的跳跃”,返回true。
在main函数中,先读取输入的数组长度n,然后依次读取数组元素。每读取完一组测试数据后,调用isJolly函数判断数组是否符合要求,并输出相应的结果。
注意:该代码假设输入数据的格式正确,即每组测试数据的第一行是表示数组长度的一个整数,接下来的一行是用空格隔开的整数数组
原文地址: https://www.cveoy.top/t/topic/hWlf 著作权归作者所有。请勿转载和采集!