Private0


私信TA

用户名:Kewall

访问量:4139

签 名:

Kewall

等  级
排  名 6158
经  验 1448
参赛次数 2
文章发表 4
年  龄 20
在职情况 学生
学  校 四川工商学院
专  业 物联网工程

  自我简介:

一个小菜鸟

解题思路:利用贪心思想,从第一个与最后一个比较。i++,j--;在判断n是奇数还是偶数。直接上代码

注意事项:

参考代码:

#include <stdio.h>

int main(){

int n,sum=0;

int flag=0;

char a[8001];

scanf("%d",&n);

scanf("%s",a);

int i,j=n-1,k,m;

for(i=0;i<j;i++){

for(k=j;k>=i;k--){

         if(i==k){  //利用贪心思想,找到与a[i],相同的字符,如果i==k了 ,那就是没有找到相同的字符; 

if(n%2==0){//如果n是偶数个字符的话,那就不能构成回文数 

printf("Impossible");

return 0;

}

else{  

if(flag){

printf("Impossible");

return 0;

}

}//如果是奇数的话就要把他移动到中间

sum+=(n/2)-i;

flag=1;

break;

}

if(a[i]==a[k]){//如果找到与a[i]相同的字符,则进行交换 

for(m=k;m<j;m++){

a[m]=a[m+1];

sum++;

}

a[j]=a[i];

--j;

break;

}

}

}

printf("%d",sum);

return 0;


 

0.0分

3 人评分

  评论区

  • «
  • »