您的位置:首页 > 编程语言

Codeforces Round #277.5 (Div. 2) A SwapSort 我自己写的奇葩代码竟然AC了。。。自己都觉得不可思议

2014-11-19 21:29 696 查看
就是模拟,考察基本功的题

题目大意:给n个数,输出最少交换次数以及每一次都交换第几个和第几个数(的下标,并且下标从[0~n) )

就这样......

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <cstdlib>
#include <algorithm>
#define maxn 0XFFFFF
#define MAX 0xFFFFFFF
#define lson l,m,t<<1
#define rson m+1,r,t<<11
using namespace std;
struct node
{
int tou;
int wei;
}nd[3100];
int a[3200],b[3200],n;
int main(int argc, char *argv[])
{
while(scanf("%d",&n)!=EOF)
{
for(int i = 0 ; i < n ; i++)
{
scanf("%d",&a[i]);
b[i] = a[i];
}
sort(b,b+n);
int t = 0,i = 0;
while(i != n)
{
for(int j = 0 ; j < n ; j++)
{
if(a[j] != b[j])
{
i = j;
break;
}
if(j == n-1)
i = n;
}
for(int p = i+1 ; p < n ; p++)
{
if(a[p] == b[i])
{
int w = a[i];
a[i] = a[p];
a[p] = w;
nd[t].tou = i;
nd[t].wei = p;
t++;
break;
}
}
}
printf("%d\n",t);
for(int i = 0 ; i < t ; i++)
printf("%d %d\n",nd[i].tou,nd[i].wei);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: