首页 > ACM题库 > 九度OJ > 九度-1053-互换最大最小数[解题代码]
2013
12-12

九度-1053-互换最大最小数[解题代码]

题目来源:2010年哈尔滨工业大学计算机研究生机试真题

题目描述:

输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。

输入:

测试数据有多组,输入n(1<=n<=20),接着输入n个数。

输出:

对于每组输入,输出交换后的结果。

样例输入:
2
1 3
样例输出:
3 1

cpp 代码如下:
#include<stdio.h>
int main()
{
               int n,a[20],i,max,min,x,y;
        while(scanf("%d",&n)!=EOF)
        {
                for(i=0;i<n;i++)
                {
                        scanf("%d",&a[i]);
                        min=max=a[0];
                        x=y=0;
                }
                for(i=0;i<n;i++)
                {   
                        if(a[i]<min)
                        {
                                                min=a[i];
                                        x=i;
                        }
                        if(a[i]>max)
                        {
                                max=a[i];
                                y=i;
                        }
                }
                a[y]=min;
                                a[x]=max;
                                for (i=0;i<n;i++)
                {
                                             printf("%d",a[i]);
                             if(i!=n-1) 
                             printf(" ");
                                             else 
                            printf("\n");
                }
        }
    return 0;
}

/**************************************************************
	Problem: 1053
	User: coder
	Language: C++
	Result: Accepted
	Time:0 ms
	Memory:1020 kb
****************************************************************/


  1. 样例输出和程序输出不吻合,修改一下样例输出吧。我用的是VC编译器,会提示我的i和j变量重复定义

  2. 你的理解应该是:即使主持人拿走一个箱子对结果没有影响。这样想,主持人拿走的箱子只是没有影响到你初始选择的那个箱子中有奖品的概率,但是改变了其余两个箱子的概率分布。由 1/3,1/3 变成了 0, 2/3