看了12期的讲解,赶紧回来把代码写出来:
//huiwen.cpp:Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
voidswap(char*consts,inti,intj)
...{
chartemp;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
intpseudo_bubble(char*consts,intlength)
...{
inti,j,k;
intodd;
charalphabet[26];
intcount=0;
for(i=0;i<length;i++)
alphabet[s[i]-'a']++;
odd=-1;
for(i=0;i<sizeof(alphabet);i++)
if(alphabet[i]%2)...{
if(odd=-1)//thefirst'odd'
odd='a'+i;
else//2odds
return-1;
}
i=0;
while(s[i]!=s[length-1-i])...{//untilthecorrespondingelementisright
j=length-1-i;
for(k=j-1;k>i&&s[k]!=s[i];k--);//findthecorrespondingelement'slocation
if(k==i)...{//findnobody->thisisthelast'odd'-closesttothecenter
swap(s,k,k+1);
}else...{
while(k<j)...{
swap(s,k,k+1);//bubbleitout
count++;
k++;
}
i++;
}
}
returncount;
}
int_tmain(intargc,_TCHAR*argv[])
...{
intx;
chars[]=...{'a','b','a','c','a','e','b','a','d','c','d'};
//{'a','b','a','c','a','b','a','d','c','d'};
//{'a','b','a','c','e','b','e','d','c','d'};
x=pseudo_bubble(s,sizeof(s));
if(x==-1)
printf("Impossible");
else
printf("%d",x);
//getchar();
return0;
}
开的VS2005写的,显得累赘。。。
找奇数次出现的元素所用的循环可以合并到后来的排序的循环里去的,不过那样,太丑。。。
刚看讲解时以为说的是选择成对字符时可以“左右开弓”?? 但做起来似乎代码很麻烦,所以干脆以左半边为准排序。
分享到:
相关推荐
《程序员》9期算法擂台“骑士聚会”源代码
《程序员》第9期智慧擂台题目文件
程序员面试经典算法题.通过对经典的有一定难度的算法类题目的分析,培养程序员算法思维.
程序员实用算法+源码,本书一共七个部分全部下载才可正常解压
程序员实用算法
程序员实用算法 程序员实用算法程序员实用算法 程序员实用算法
《程序员算法趣题》随书的课后源码。作者是增井敏克。
Python程序员面试 - 算法宝典,PDF资源,仅供参考,请支持正版书籍。
程序员算法大全算法数据结构智力题
Kotlin程序员面试算法宝典 Kotlin程序员面试算法宝典 Kotlin程序员面试算法宝典
程序员面试算法大全 有详细代码和结题思路,程序员面试必看的资料!!!
程序员实用算法源码兼容VS2008及更高级的版本。在VS2008中可以直接运行,在VS2010中需先进行转换才能运行。 每个项目文件中,具体参数如何设置,是可以从源码的main函数中获得的,具体可以查看main函数中形如“...
程序员算法大全算法数据结构智力题 C/C++。 程序员算法大全算法数据结构智力题 算法
面试算法题
本书作者介绍了一些有用但很少被讨论的算法,它们可用于语音查找、日期和时间例程(直到公元1年)、B树和索引文件、数据压缩、任意精度的算术、校验和与数据验证,并且还最全面地介绍了查找例程、排序算法和数据结构...
scala程序员面试算法宝典
Practical Algorithms for Programmers程序员实用算法 (美)Andrew Binstock、JohnRex(陈宗斌等译)著源码.
程序员实用算法 source code 好东西,没什么好说的 仔细看吧!(字数不够)
PHP程序员算法题汇总,经典算法题仅供学习研究。