uva10716
来源:互联网 发布:拼多多商城源码 编辑:程序博客网 时间:2024/06/06 01:33
题目大意:
找到最少的步数可以使得所给字符串变成回文,可以变成回文就输出步数,不能的话就输出Impossible。
思路:
刚开始想说,左边完全不动,右边去满足左边的,看了题解之后,是找到最两端满足条件的最少步数的字符之后,开始向内缩小区间,以此类推。
代码:
#include <iostream>using namespace std;#include <cstring>#include <stdio.h>int alp[26],cnt;char s[110];void solve(char *a,int len) { if(a[0] == a[len -1]) return ; for(int i = 1; i <len-1; i++) { if(a[i] == a[len -1]) { for(int j = i; j > 0; j--) { char temp = a[j]; a[j] = a[j -1]; a[j - 1] = temp; } cnt += i; return; } else if(a[0] == a[len - 1 - i]) { for(int j = len - 1 - i; j < len - 1; j++) { char temp = a[j]; a[j] = a[j + 1]; a[j + 1] =temp; } cnt += i; return; } }}int main() { int N; scanf("%d",&N); getchar(); while(N--) { gets(s); memset(alp,0,sizeof(alp)); for(int i = 0 ; i < strlen(s); i++) alp[s[i]-'a']++; cnt = 0; for(int i = 0 ; i <26; i++) if(alp[i] % 2) cnt++; if(cnt > 1) printf("Impossible\n"); else { cnt = 0; for(int i = 0; i < strlen(s)/2; i++) solve(s + i, strlen(s)- 2 * i); printf("%d\n",cnt); } } return 0;}
0 0
- uva10716
- uva10716
- UVA10716 - Evil Straw Warts Live
- uva10716 - - Evil Straw Warts Live
- [贪心]UVA10716 - Evil Straw Warts Live
- uva10716 - Evil Straw Warts Live(转换成回文数)
- Evil Straw Warts Live (Uva10716 回文串+贪心)
- uva10716(贪心+c++ stl list的运用 java linkedlist的运用)
- PHP单双引号的关系与区别
- Android名片识别
- Android绘图(三)
- Redis整合Spring结合使用缓存实例
- 为什么你的项目总是延期?
- uva10716
- 中国剩余定理
- mysql 插入中文变成???的问题
- 开源框架(整理)
- Google推出下一代托管MySQL产品
- 【后缀自动机】SPOJLCS SPOJNSUBSTR SPOJLCS2 HDU4416
- Java JNI HelloWorld
- [leetcode 245] Shortest Word Distance III
- Python_金山词霸每日一句接口调用(可播放音频)