原题链接:特殊排序
解题思路:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复