输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。 接下来的一行有N个整数。
可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。 第二行将排序的结果输出。
4 1 3 4 2
4 1 2 3
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int n;
int buf[1000];
while (cin >> n) {
for (int i = 0; i < n; i++) {
cin >> buf[i];
}
sort(buf, buf + n);
cout << buf[n - 1] << endl;
if (n == 1) {
cout << -1 << endl;
continue;
}
for (int i = 0; i < n - 1; i++) {
if(i != n-2) cout << buf[i] << " ";
else cout << buf[i] << endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
priority_queue<int, vector<int>, greater<int> > q;
int n, x, m;
while(cin >> n)
{
m = -1;
while(n--)
{
cin >> x; q.push(x); m = max(m, x);
}
cout << m << '\n';
if(q.size() == 1) cout << -1;
else while(q.size() > 1)
{
cout << q.top() << ' '; q.pop();
}
cout << '\n';
}
return 0;
} #include<bits/stdc++.h> //万能头
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int N;
while(scanf("%d",&N)!=EOF)
{
int a[N];
for(int i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+N);
if(N==1)
{
printf("%d\n",a[N-1]);
printf("-1\n");
}
else
{
printf("%d\n",a[N-1]);
for(int i=0;i<N-1;i++)
{
printf("%d ",a[i]);
}
}
}
return 0;
} #include<stdio.h>
int main()//1.排序2.控制输出
{
int n,a[1000],i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)//冒泡的趟数
{
for(j=0;j<n-1-i;j++)//比较的次数
{
if(a[j]>a[j+1])
{//交换
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
if(n==1) printf("%d\n-1",a[0]);
else{
printf("%d\n",a[n-1]);
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
}
} import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) arr[i] = scanner.nextInt();
Arrays.sort(arr);
System.out.println(arr[n-1]);
if (n>1) for (int i = 0; i < arr.length - 1; i++) System.out.print(arr[i]+" ");
else System.out.println("-1");
}
} #include<stdio.h>
(737)#include<limits.h>
void swap(int *a,int *b){
int temp = *a;
*a = *b;
*b = temp;
}
//冒泡排序
void sort(int nums[],int n){
for(int i=0;i<n;i++)
for(int j=0;j<n-1-i;j++)
if(nums[j]>nums[j+1])
swap(&nums[j],&nums[j+1]);
}
int main(){
int n;
int max = INT_MIN,k=0;
while(scanf("%d",&n)!=EOF){
int nums[n];
//输入数据并找到最大值
for(int i=0; i<n; i++){
scanf("%d",&nums[i]);
if(nums[i]>max)
max = nums[i];
}
//输出最大值
printf("%d\n",max);
if(n==1){
printf("-1");
break;
}
//排序并输出
sort(nums,n);
for(int i=0;i<n-1;i++)//不输出最后的最大值
printf("%d ",nums[i]);
}
return 0;
} /*
解题思路:将数据存入数组中,然后利用排序算法升序排列,这里用快速排序算法,先输出数组中最后一个元素,然后在顺序输出数组元素。
如果n=1代表输出最大值后无元素,则输出-1.
*/
#include<iostream>
using namespace std;
void quickSort(int arr[],int low,int high){ //快速排序算法
int temp;
int i=low,j=high;
if(low<high){
temp=arr[low]; //第一个元素作为枢纽,进行划分
while(i<j){
while(j>i&&arr[j]>=temp)
--j;
if(i<j){ //
arr[i]=arr[j];
++i;
}
while(i<j&&arr[i]<temp)
++i;
if(i<j){ //
arr[j]=arr[i];
--j;
}
}
arr[i]=temp; //
quickSort(arr,low,i-1);
quickSort(arr,i+1,high);
}
}
int main(){
int n; //输入数据个数
while(cin>>n){
int i,a[1000];
for(i=0;i<n;++i)
cin>>a[i];
quickSort(a,0,n-1);
cout<<a[n-1]<<endl;
if(n==1) cout<<-1<<endl;
else{
for(i=0;i<n-2;i++){
cout<<a[i]<<" ";
}
cout<<a[n-2]<<endl; //不输出最后那个空格
}
}
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<int> v;
int max=0;
int maxIndex=0;
for(int i=0;i<n;i++){
int number;
cin>>number;
if(max<number){
max=number;
maxIndex=i;
}
v.push_back(number);
}
cout<<v[maxIndex]<<endl;
v.erase(v.begin()+maxIndex);
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
if(v.size()==0){
cout<<-1;
}
cout<<endl;
}
}
package com.speical.first;
import java.util.Scanner;
/**
* 希尔排序
*
* 坑 :如果n == 1,还要再输出个-1
* @author Special
* @time 2018/02/09 10:44:22
*/
public class Pro208 {
public static void XierSort(int[] nums) {
int steps = nums.length / 3 + 1;
while(steps > 0) {
for(int i = steps; i < nums.length; i++) {
for(int j = i; j >= steps && nums[j] > nums[j - steps]; j--) {
int temp = nums[j];
nums[j] = nums[j - steps];
nums[j - steps] = temp;
}
}
steps--;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while(input.hasNext()) {
int n = input.nextInt();
int[] nums = new int[n];
for(int i = 0; i < n; i++) {
nums[i] = input.nextInt();
}
XierSort(nums);
if(n > 0) {
System.out.println(nums[0]);
}
if(n > 1) {
for(int i = n - 1; i > 0; i--) {
System.out.print((i == n - 1 ? "" : " ") + nums[i]);
}
}
else if(n == 1) {
System.out.print("-1");
}
System.out.println();
}
}
}
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *p, const void *q) {
return (*(int *)p > *(int *)q) ? 1 : 0;
}
int main(void) {
int n = 0;
int i = 0;
while (scanf("%d", &n) != EOF) {
int arr[n];
for (i = 0; i < n; i++)
scanf("%d", &arr[i]);
qsort(arr, n, sizeof(int), cmp);
printf("%d\n", arr[n-1]);
if (n-1 == 0) {
printf("%d\n", -1);
} else {
for (i = 0; i < n-2; i++)
printf("%d ", arr[i]);
printf("%d\n", arr[n-2]);
}
}
return 0;
}
//不知道为什么n=1时要输出-1
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
while(cin>>n){
int i;
int a[1000];
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
//选择排序
/*for(i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}*/
//冒泡排序
/*for(i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}*/
cout<<a[n-1]<<endl;
if(n==1) cout<<-1<<endl;
else{
for(i=0;i<n-2;i++){
cout<<a[i]<<" ";
}
cout<<a[n-2]<<endl;
}
}
return 0;
} #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(void)
{
int n;
vector<int> a;
while(cin >> n)
{
a.clear();
for(int i = 0;i < n;i++)
{
int x;
cin >> x;
a.push_back(x);
}
sort(a.begin(), a.end());
int len = a.size();
cout << a[len - 1] << endl;//输出排序后的最后一个数
a.pop_back();//删除最后一个最大数
if(a.size() != 0)//输出剩余序列
{
for(vector<int>::iterator it = a.begin();it != a.end();it++)
cout << *it << ' ';
cout << endl;
}
else
cout << -1 << endl;
}
return 0;
} //开始错的两次都是没读懂题目QAQ
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int *a=new int[n],max=-999999,count=0;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>max)
max=a[i];
}
cout<<max<<endl;
sort(a,a+n);
if(n==1)
cout<<"-1"<<endl;
else{
for(int i=0;i<n-2;i++)
cout<<a[i]<<" ";
cout<<a[n-2]<<endl;
}
}
} #include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
int n;
int buf[1001];
while(scanf("%d",&n)!=EOF){
int max=0;
for(int i=0;i<n;i++){
scanf("%d",&buf[i]);
if(buf[i]>max){
max=buf[i];
}
}
printf("%d\n",max);
if(n==1){
printf("-1\n");
break;
}
sort(buf,buf+n);
for(int i=0;i<n-1;i++){
if(i!=n-2)printf("%d ",buf[i]);
else printf("%d\n",buf[i]);
}
}
return 0;
}
为啥我在自己的IDE上是对的 在OJ上只通过了10% 而且错误里写案例里我的答案什么都没显示??
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 1005;
int num[maxn];
int main()
{
int count = 0;
int n;
int tmp;
while(cin >> n)
{
for(int i = 0; i < n; ++i)
{
cin >> num[i];
}
sort(num, num+n);
cout << num[n-1] << endl;
tmp = n-2;
if(tmp >= 0)
{
for(int i = 0; i <= tmp; ++i)
{
cout << num[i];
if(i < tmp) cout << " ";
}
}
else
{
cout << -1;
}
cout << endl;
}
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, max;
cin >> N;
vector<int> intge(N);
for(int i = 0; i < N; i++){
cin >> intge[i];
}
auto p = max_element(intge.begin(), intge.end());
max = *p;
intge.erase(p);
cout << max << endl;
if(size(intge) == 0){
cout << -1;
return 0;
}
sort(intge.begin(), intge.end());
for(int i : intge){
cout << i << ' ';
}
} 这个题为什么是困难难度???