1 条题解

  • 0
    @ 2025-9-10 9:00:39

    C++ :

    #include <stdio.h>
    #include <string.h>
    
    char buf[2000];
    
    int c,i,j,n,swaps,extra;
    
    main(){
       scanf("%d",&c);
       while (c--) {
          scanf("%s",buf);
          n = strlen(buf);
          swaps = 0;
          extra = 0;
          for (i=0;i<n/2;i++) {
             for (j=n-i-!extra;j>i && buf[i] != buf[j];j--) {}
             if (j == i) {
                if (extra || n%2 == 0) {
                   printf("Impossible\n");
                   goto dun;
                }
                extra = n/2 - i;
                continue;
             }
             for (; j < n-i-!extra ; j++) {
                int t = buf[j];
                buf[j] = buf[j+1];
                buf[j+1] = t;
                swaps++;
             }
          }
          printf("%d\n",swaps+extra);
       dun:;}
       if (1 == scanf("%s",buf)) printf("extra input!!!\n");
    }
    
    
    • 1

    信息

    ID
    3615
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者