问题标题: 酷町堂:1065 最值对调

0
0
已解决
潘晨皓
潘晨皓
高级天翼
高级天翼
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[110],n,k,j,maxn=0,minn=100000;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>=maxn){
			maxn=a[i];
			k=a[i];
		}
		else if(a[i]<minn){
			minn=a[i];
			j=a[i];
		}
	} 
	a[k]=minn;
	a[j]=maxn;
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
//1065

WA:0分

1065   最值对调

题目描述 Description
给定一个整数序列,找出其中最大和最小值所在的位置,并将最大值和最小值所在位置对调,其他数值的位置保持不变,并输出此序列。(若有多个最大值,则选择最右边的最大值;若有多个最小值,则选择最左边的最小值)。

输入描述 Input Description
输入为两行:
第一行为整数N,表示序列的的长度;(N≤100)
第二行为N个整数,每个数之间以单个空格隔开(0~10000)。

输出描述 Output Description
输出为一行,为最值对调后的整数序列

样例输入 Sample Input
10
1 2 3 1 4 5 10 6 10 8

样例输出 Sample Output
10 2 3 1 4 5 10 6 1 8

呜呜呜,求大神解答……

由于今天下午要考试,所以心血来潮来刷题了,结果第一题就……

潘晨皓在2020-08-05 15:24:06追加了内容

顶!

潘晨皓在2020-08-05 15:33:24追加了内容

ding

潘晨皓在2020-08-05 17:19:33追加了内容
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[110],n,k,j,maxn=0,minn=100000;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>=maxn){
			maxn=a[i];
			k=i;
		}
		else if(a[i]<minn){
			minn=a[i];
			j=i;
		}
	} 
	minn=a[k];
	maxn=a[j];
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

现在处于奇葩状态,求解!!!

潘晨皓在2020-08-06 13:47:58追加了内容

ding

潘晨皓在2020-08-06 13:49:11追加了内容

啊啊啊!求大佬解决!!!

QWQ

也顺便推荐下俺的洛谷团队

有想当管理员的私信给我


0
已采纳
贾志骜
贾志骜
新手光能
新手光能

k=i;

j=i;

贾志骜在2020-08-05 17:20:59追加了内容

等号左右换一下

贾志骜在2020-08-05 17:27:40追加了内容
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[1100],n,k,j,maxn=0,minn=100000;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>=maxn){
			maxn=a[i];
			k=i;
		}
		else if(a[i]<minn){
			minn=a[i];
			j=i;
		}
	} 
	a[k]=minn;
	a[j]=maxn;
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
帮你改好了,试试

 

0
黄子扬
黄子扬
初级天翼
初级天翼

k=a[i]?

k=i!

j也一样

黄子扬在2020-08-05 15:04:27追加了内容

中级天翼dalaoOrz

黄子扬在2020-08-05 15:04:33追加了内容

中级天翼dalaoOrz

黄子扬在2020-08-05 15:04:38追加了内容

中级天翼dalaoOrz

黄子扬在2020-08-05 15:07:38追加了内容

服了,你这赋值以后自己等于自己

0
朱优扬
朱优扬
中级天翼
中级天翼

循环里面的if内容是maxn2=i(minn2=i)

循环外全部不要了!改成:

在循环外swap(a[maxn2],a[minn2]);

再来一个for循环

内容:

    判断a[i]!=minn&&i!=maxn2||a[i]!=maxn&&i!=minn2

            输出

    否则

            判断(a[i]==minn&&i==maxn2){ 输出minn}

            判断(a[i]==maxn&&i==minn2){ 输出maxn }

0
张成林
张成林
初级守护
初级守护
  • 1.先定义最大值和最小值
  •    然后输入
  • 2.for循环
  •    输入[i]
  • 3.判断
  • 4.交换数值
  • 5.最后输出a[i]

        望采纳

我要回答