A1043. 完美的代价
2018-02-13 22:10
183 查看
A1043. 完美的代价时间限制:1.0s 内存限制:512.0MB 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换 ad : mamda
第二次交换 md : madma
第三次交换 ma : madam (回文!完美!)输入格式 第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
第二行是一个字符串,长度为N.只包含小写字母输出格式 如果可能,输出最少的交换次数。
否则输出Impossible样例输入5
mamad样例输出3
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
while((scanf("%d",&n))!=EOF){
int count_a[26]={0},count_odd=0;
int ans=0;
char x[8000],tmp;
getchar();
for(int i=0;i<n;i++){
scanf("%c",&x[i]);
count_a[x[i]-'a']++;
}
for(int i=0;i<26;i++){
if(count_a[i]%2!=0){
count_odd++;
tmp=i+'a';
}
}
if(count_odd>=2)
printf("Impossible\n");
else{
int i,j,k;
for(i=0;i<n/2;i++){
if(x[i]==tmp){
for(j=i;j<n-i-1;j++)
if(x[n-i-1]==x[j])
break;
ans+=j-i;
for(k=j;k>i;k--)
x[k]=x[k-1];
x[i]=x[n-i-1];
}
else{
for(j=n-i-1;j>=i;j--)
if(x[i]==x[j])
break;
ans+=n-i-j-1;
for(k=j;k<n-i-1;k++)
x[k]=x[k+1];
x[n-i-1]=x[i];
}
}
printf("%d\n",ans);
}
}
system("pause");
return 0;
}
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换 ad : mamda
第二次交换 md : madma
第三次交换 ma : madam (回文!完美!)输入格式 第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
第二行是一个字符串,长度为N.只包含小写字母输出格式 如果可能,输出最少的交换次数。
否则输出Impossible样例输入5
mamad样例输出3
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
while((scanf("%d",&n))!=EOF){
int count_a[26]={0},count_odd=0;
int ans=0;
char x[8000],tmp;
getchar();
for(int i=0;i<n;i++){
scanf("%c",&x[i]);
count_a[x[i]-'a']++;
}
for(int i=0;i<26;i++){
if(count_a[i]%2!=0){
count_odd++;
tmp=i+'a';
}
}
if(count_odd>=2)
printf("Impossible\n");
else{
int i,j,k;
for(i=0;i<n/2;i++){
if(x[i]==tmp){
for(j=i;j<n-i-1;j++)
if(x[n-i-1]==x[j])
break;
ans+=j-i;
for(k=j;k>i;k--)
x[k]=x[k-1];
x[i]=x[n-i-1];
}
else{
for(j=n-i-1;j>=i;j--)
if(x[i]==x[j])
break;
ans+=n-i-j-1;
for(k=j;k<n-i-1;k++)
x[k]=x[k+1];
x[n-i-1]=x[i];
}
}
printf("%d\n",ans);
}
}
system("pause");
return 0;
}
相关文章推荐
- 蓝桥杯 基础练习 完美的代价
- 基础练习 完美的代价
- C语言 · 完美的代价
- 12.完美的代价
- 蓝桥杯练习(vip) 完美的代价
- 完美代价
- 完美的代价
- tsinsen A1043. 完美的代价
- 1573:基础练习 完美的代价
- 寒假01:<分解质因数>、<完美代价>、<数的读法>
- 基础练习——完美的代价
- 蓝桥杯 基础训练 完美的代价(转)
- 基础训练 完美的代价(贪心算法)
- 基础训练 完美的代价
- [BASIC-19] - 完美的代价 (Unsolved)
- 蓝桥杯 基础训练 完美的代价-----------------------------C语言——菜鸟级
- 完美的代价
- 完美的代价
- BASIC-19 VIP试题 完美的代价
- 蓝桥网 基础练习 完美的代价