描述:把所给的字符串变换成回文,并统计其变换次数,如果不能,则输出Impossible #include <cstdio> #include <cstdlib> #include <cstring> int main() { // freopen("a.txt","r",stdin); int n,num[30]; scanf("%d",&n); while(n--) { char s[110]; memset(num,0,sizeof(num)); scanf("%s",s); int len=strlen(s),flag=0,m,count=0; for(int i=0; i<len; i++) num[s[i]-'a']++; for(int i=0; i<26; i++) if(num[i]%2==1) flag++; if(flag>=2) { printf("Impossible\n"); continue; } m=len-1; for(int i=0; i<len/2; i++) { int j=m; for(; j>i; j--) if(s[j]==s[i]) break; if(j==i) { int temp=s[i]; s[i]=s[i+1]; s[i+1]=temp; i--; count++; continue; } count+=m-j; for(int k=j+1; k<=m; k++) s[k-1]=s[k]; s[m--]=s[i]; } printf("%d\n",count); } return 0; }