原题链接:特殊排序
解题思路:
fo了,水题还错,直接看代码把,给我留言什么数据出错了。
参考代码:
//错误代码:
#include <iostream> #include <algorithm> #include <vector> #include <limits.h> //#define hh ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); using namespace std; vector<long> v; long n; int main() { //hh; while (cin >> n) { long max_number = LONG_MIN; v.clear(); for (long i = 0; i < n; i++) { long temp; cin >> temp; v.push_back(temp); if (max_number < temp) { max_number = temp; } } if(n==1) { cout<<*v.begin()<<endl; cout<<"-1"<<endl; continue; } vector<long>::iterator it; for (it = v.begin(); it != v.end();) { if (*it == max_number) { it = v.erase(it); } else { ++it; } } sort(v.begin(), v.end()); cout << max_number << endl; for (it = v.begin(); it != v.end(); it++) { cout << *it << ' '; } cout << endl; } return 0; }
丢,写出来了,原来判重只能判断一个,分别上出啊两段代码,一个用vector一个用普通数组。
vector版本:
#include<bits/stdc++.h> using namespace std; vector<int> v; int n,max_number=INT_MIN; int main() { while(cin>>n) { max_number=INT_MIN; v.clear(); for(int i=0; i<n; i++) { int t; cin>>t; v.push_back(t); if(max_number<t) { max_number=t; } } if(n==1) { cout<<max_number<<endl; cout<<-1<<endl; continue; } vector<int>::iterator it; for(it=v.begin(); it!=v.end();) { if(*it==max_number) { v.erase(it++); break; } else { it++; } } cout<<max_number<<endl; sort(v.begin(),v.end()); for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<' '; } cout<<endl; } return 0; }
普通版本:
#include<bits/stdc++.h> using namespace std; const int maxn=100005; int a[maxn]; int n,max_number=INT_MIN; int main(){ while(cin>>n){ max_number=INT_MIN; memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ cin>>a[i]; if(max_number<a[i]){ max_number=a[i]; } } sort(a,a+n); if(n==1){ cout<<max_number<<endl; cout<<-1<<endl; continue; } cout<<max_number<<endl; for(int i=0;i<n-1;i++){ cout<<a[i]<<' '; } cout<<endl; } return 0; } //上下都正确 #include<bits/stdc++.h> using namespace std; const int maxn=100005; int a[maxn]; int n; int main() { while(cin>>n){ memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ cin>>a[i]; } if(n==1){ cout<<a[0]<<endl; cout<<-1<<endl; continue; } sort(a,a+n); cout<<a[n-1]<<endl; for(int i=0;i<n-1;i++){ cout<<a[i]<<' '; } cout<<endl; } return 0; } //提交后正确
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复