Little Robber Girl's Zoo(冒泡排序)

题目链接: http://codeforces.com/problemset/problem/686/B

题意分析:其实就是给定一串数字,输出在将其排成递增数列时哪两个数字需要交换位置,输出结果不唯一,直接用最简单的冒泡排序写就好。

错因分析:比赛时最后完全卡在了这道题上,是我把问题想复杂了,一直在根据题意描述的方法写代码,在看到第三组样例时就觉得很奇怪明明2和5,

3和4交换位置后已经得到了想要的序列为啥还要进行交换。当时却没想到答案不唯一也就意味着根本不用按照他说的方法写,太麻烦了,直接用冒泡排

序就行,又快又准。这道题错的我很郁闷啊,但是却一点都不冤。

#include
#include
#include
#include
#include
#include
#include
#include
const int maxn = 110;
using namespace std;
int main()
{
    int a[maxn];
    int n;
    scanf("%d",&n);
    for(int i = 0; i < n; i++)
        scanf("%d",&a[i]);
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n - 1; j++)
        {
            if(a[j] > a[j+1])
            {
                printf("%d %d\n",j+1, j+2);
                swap(a[j], a[j+1]);
            }
        }
    }
    return 0;
}


你可能感兴趣的:(OJ,——,CodeForces,水题)