解题思路:
注意事项:
multiset容器是会自动从小到大排列顺序的数组,只不过没有数组的下标,寻找它的某一个元素需要知道这个元素的值是多少
参考代码:
#include<bits/stdc++.h>
//万能头文件
using namespace std ;
int main ( )
{
int n=0 ,a=0 ,b=0 ;
int firstElement=0 ,lastElement=0 ;
multiset<int>st ;
//建立名字叫 st 的multiset容器 它的元素是int类型
cin>>n ;
for ( int i=0 ; i<n ; i++ )
{
cin>>a ;
if ( i!=0 )
{
int temp=abs(b-a) ;
//求整数的绝对值 abs( )
st.insert(temp) ;
//把temp插入 st 中
}
b=a ;
}
//for ( auto it:st ) cout<<it<<"\t" ;
//上面这句话是遍历输出st的全部元素
if ( !st.empty() )
// st 不是空的
{
firstElement = *st.begin() ;
lastElement = *st.rbegin() ;
}
for ( int i=firstElement ; i<=lastElement ; i++ )
{
if ( st.find(i)==st.end() )
//不能说 i!=st.find(i) 但意思就是这个意思
{
cout<<"Not jolly"<<endl ;
return 0 ;
}
}
cout<<"Jolly"<<endl ;
return 0 ;
}
/*方式二:豆包修改版本
#include <iostream>
#include <set>
#include <cmath>
int main() {
int n = 0, a = 0, b = 0;
std::multiset<int> st;
std::cin >> n;
// 处理 n 为 1 的特殊情况
if (n == 1) {
std::cout << "Jolly" << std::endl;
return 0;
}
for (int i = 0; i < n; i++) {
std::cin >> a;
if (i != 0) {
int temp = std::abs(b - a);
st.insert(temp);
}
b = a;
}
// 检查是否包含从 1 到 n - 1 的所有差值
for (int i = 1; i < n; i++) {
if (st.find(i) == st.end()) {
std::cout << "Not jolly" << std::endl;
return 0;
}
}
std::cout << "Jolly" << std::endl;
return 0;
}
*/
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复