求最大、次大和第3大的值
生活随笔
收集整理的這篇文章主要介紹了
求最大、次大和第3大的值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
7-1 求最大、次大和第3大的值 (25 分)
本題目要求讀入n個整數,要求用最少的比較次數,輸出它們的最大值、第2大的值和第3大的值。例如,對于13 13 1 10 34
10這6個數,最大值為34,第2大的值為13,第3大的值為10。
輸入格式:
輸入有兩行。第一行為整數個數n(≤1 000 000),第二行給出n個以空格分隔的整數。
輸出格式:
對每一組輸入,在一行中輸出最大值、第2大的值和第3大的值值,中間以一個空格分隔,但行尾沒有多余空格。
如果輸入數據不足三個,則輸出“Invalid Input”。 如果沒有第3大的值,則輸出“There is no third largest
element”。 如果沒有第2大和第3大的值,則輸出“There is no second largest and third
largest element”。
輸入樣例:
6
13 13 1 10 34 10
輸出樣例:
34 13 10
#include<stdio.h> int main() {int n,max[3]={-100000,-100000,-100000},cnt=0;scanf("%d",&n);if(n<3){printf("Invalid Input\n");return 0;}//不足三個數據,直接return 0;int a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){if(a[i]>max[0]){max[0]=a[i];cnt++;}}for(int i=0;i<n;i++){if(a[i]>max[1]&&a[i]<max[0]){max[1]=a[i];cnt++;}}for(int i=0;i<n;i++){if(a[i]>max[2]&&a[i]<max[1]){max[2]=a[i];cnt++;}}if(cnt==1)printf("There is no second largest and third largest element");else if(cnt==2)printf("There is no third largest element");else printf("%d %d %d",max[0],max[1],max[2]); }總結
以上是生活随笔為你收集整理的求最大、次大和第3大的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6-1 数组元素的区间删除
- 下一篇: 7-4 递增序列 (15 分)