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

来源:互联网 发布:淘宝客宣传海报 编辑:程序博客网 时间:2024/04/28 21:34

就是模拟,考察基本功的题

题目大意:给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<<11using 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;}

0 0
原创粉丝点击