uva 10716 Evil Straw Warts Live
生活随笔
收集整理的這篇文章主要介紹了
uva 10716 Evil Straw Warts Live
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
沒有看明白這標題配圖和題目有什么關系,好像這是一張專輯的名字。先要考慮有多少個字母總數是奇數,超過1個就直接輸出impossible。每一次考慮兩端點情況,如果字母不同,再進行搜索,換那個字母交換次數比較少,然后進行交換那一邊的字母,直到變成回文串。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;int main()
{int cas,i,j,a[27],f,cnt,len,t1,t2,k;char str[1024],c;scanf("%d",&cas);getchar();while(cas--){cnt=0;memset(a,0,sizeof(a));scanf("%s",str);for(i=0;str[i]!=0;i++)a[str[i]-'a']++;f=0;for(i=0;i<26;i++){if(a[i]%2) f++;if(f>=2) break;}if(f>=2) printf("Impossible\n");else{len=strlen(str);for(i=0;i<len/2;i++){j=len-1-i;if(str[i]!=str[j]){for(t1=i;str[t1]!=str[j];t1++);for(t2=j;str[t2]!=str[i];t2--);if(t1-i>j-t2){cnt+=j-t2;for(k=t2;k<j;k++)str[k]=str[k+1];}else{cnt+=t1-i;for(k=t1;k>i;k--)str[k]=str[k-1];}}}printf("%d\n",cnt);}getchar();}return 0;
}
版權聲明:本文為博主原創文章,未經博主允許不得轉載。http://xiang578.top/
轉載于:https://www.cnblogs.com/xryz/p/4848091.html
總結
以上是生活随笔為你收集整理的uva 10716 Evil Straw Warts Live的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多进程Socket_Server
- 下一篇: mysql分区功能详细介绍,以及实例