题目链接: http://codeforces.com/problemset/problem/686/B
题意分析:其实就是给定一串数字,输出在将其排成递增数列时哪两个数字需要交换位置,输出结果不唯一,直接用最简单的冒泡排序写就好。
错因分析:比赛时最后完全卡在了这道题上,是我把问题想复杂了,一直在根据题意描述的方法写代码,在看到第三组样例时就觉得很奇怪明明2和5,
3和4交换位置后已经得到了想要的序列为啥还要进行交换。当时却没想到答案不唯一也就意味着根本不用按照他说的方法写,太麻烦了,直接用冒泡排
序就行,又快又准。这道题错的我很郁闷啊,但是却一点都不冤。
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<cstring>
#include<set>
#include<queue>
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;
}