题目描述
输入3N个整数,求前N个、中间N个和后面N个的各自最大值。
输入格式
第一行1个正整数:N,N范围在[1,100]。
第二行3N个不同的正整数:范围在[1,10000]。
输出格式
3个整数。
输入/输出例子1
输入:
3
3 6 2 7 9 4 2 5 8
输出:
6 9 8
我不会求三段的最大值
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
int n,a[10005],ma;
int main(){
cin>>n;
for(int i=1;i<=n*3;i++){
cin>>a[i];
}
for(int i=1;i<=3;i++){
ma=10001;
?
cout<<ma<<" ";
}
return 0;
}
如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
int n,a[10005],ma;
int main(){
cin>>n;
for(int i=1;i<=n*3;i++){
cin>>a[i];
}
for(int i=1;i<=3*n;i++)
{
if(i<=n)
{
if(i==1)
ma = a[i];
else if(a[i]>ma)
ma = a[i];
cout<<ma<<" ";
}else if(i<2*n)
{
if(i==n+1)
ma=a[i+1];
else if(a[i]>ma)
cout << ma << " ";
}else
{
if(i==2*n+1)
ma=a[i+1];
else if(a[i]>ma)
cout << ma ;
}
}
return 0;
}
或者:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
int n,a[10005],ma;
int main(){
cin>>n;
for(int i=1;i<=n*3;i++){
cin>>a[i];
}
for(int i=1;i<=3;i++)
{
for(int j=(i-1)*n+1;j<i*n;j++)
{
if(j==(i-1)*n+1)
ma = a[j];
else if(a[j]>ma)
ma = a[j];
}
if(i<3)
cout << ma <<" ";
else
cout << ma;
}
return 0;
}
你都用algorithm 了
用个sort函数不行吗。
#include <algorithm>
#include<stdio.h>
using namespace std;
int cmp1(int a, int b)
{
return a > b;
}
int main() {
int time = 0;
scanf("%d", &time);
for (int i = 0; i < time; i++) {
int* arrs = new int[time];
for (int j = 0; j < time; j++) {
scanf("%d", &arrs[j]);
}
sort(arrs, arrs + time,cmp1);
printf("%d ", arrs[0]);
}
return 0;
}