问题标题: 酷町堂:4219

0
0
已解决
鹿雨扬
鹿雨扬
资深守护
资深守护

经验值:800

题目描述 Description

n个人排成一队,寻找队伍中最高的人和最矮的人(如果有多个最高/最矮的人,选择最左边的),让他们俩交换位置,输出交换之后队伍中人们的身高。

输入描述 Input Description

第一行,一个正整数n
第二行,n个正整数,表示一队n个人的身高

输出描述 Output Description

一行n个正整数,表示交换之后的队伍身高,用空格隔开。

样例输入 Sample Input

6 130 150 130 140 170 160

样例输出 Sample Output

170 150 130 140 130 160

数据范围及提示 Data Size & Hint

n<=100,100<=身高<=200

大佬求思路


0
已采纳
李显晨
李显晨
中级启示者
中级启示者

输入及求最大值与最小值:

for(int i=1;i<=n;i++){
        cin>>a[i];
        maxn=max(maxn,a[i]);
        minn=min(minn,a[i]);
    } 

交换部分:

for(int i=1;i<=n;i++){
        if(a[i]==maxn){
            for(int j=1;j<=n;j++){
                if(a[j]==minn){
                    swap(a[i],a[j]);
                    break;
                }
            }
            break;
        }
    }

定义、输出自己搞

0
0
李显晨
李显晨
中级启示者
中级启示者

你肯定要求最大值和最小值,如果i==maxn,则再来一层循环,如果j==minn,swap(a[i],a[j]);然后return 0;

李显晨在2020-11-25 20:18:45追加了内容

写错了,是break;

李显晨在2020-11-25 20:18:50追加了内容

写错了,是break;

李显晨在2020-11-25 20:21:17追加了内容

是a[i]==maxn和a[j]==minn

我要回答