大一C语言编程题(要详细),谢谢!

例如所给的字符串为”mamad”,第一次交换a和d,得到”mamda”,第二次交换m和d,得到”madma”;第三次交换最后面的m和a,得到”madam”。
编写程序,从键盘读入数据。第一行是一个整数N(N <= 80),表示所给字符串的长度,第二行是所给的字符串,长度为N且只包含小写英文字母。如果所给字符串能经过若干次交换变成回文串,则输出所需的最少交换次数;否则,输出Impossible。
输入输出示例1
5
mamad
3
输入输出示例2
6
aabbcd
Impossible
要有详细代码........求大神帮忙,急用

建立一个数组aa[256],全初始化为0,
2)从头读字符串,每一个是存c中,在相应的aa[c]加1
3)如果aa中的奇数,大于1个,说明不可能是回文数
4)现在就是找最小的交换次数了,也就是把aa中的字每一个拿一半加上哪个奇数减1的一半,来作排列组合,这样最后要的字符串就定下来了,每个字符在这字符串中的号是定下来的,把这个号,和输入的字符串关联起来,来进行冒泡排序 ,如果交换就增加一次交换次数,最后比较所有的排列组合哪个次数最小,就完成
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-16
1)建立一个数组aa[256],全初始化为0,
2)从头读字符串,每一个是存c中,在相应的aa[c]加1
3)如果aa中的奇数,大于1个,说明不可能是回文数
4)现在就是找最小的交换次数了,也就是把aa中的字每一个拿一半加上哪个奇数减1的一半,来作排列组合,这样最后要的字符串就定下来了,每个字符在这字符串中的号是定下来的,把这个号,和输入的字符串关联起来,来进行冒泡排序 ,如果交换就增加一次交换次数,最后比较所有的排列组合哪个次数最小,就完成了。追问

能帮我写下代码吗?

本回答被网友采纳
第2个回答  2013-06-16
什么是回文串?
相似回答