机试题

26个字母,不区分大小写,权重为1-26,每个字母的权重可以任意分配,但不能重复。任
意输入两个单词(字母数不超过255),请设计算法,能够计算出一种权重分配方法,使这
两个单词的权重差最大!

 

 

我的想法是取单词A每个字母出现为+1,而单词B对应每个单词出现记为-1,先通过计算出两个单词所有字母的情况,然后从大到小排序,可能结果的形式为:p(13),c(9),h(2),e(0),w(-2),b(-6) ....o(-17);设置权重,将这个分为两部分,一部分>=0,一部分<=0的
1).则对应取p=26;c=25;h=24;(从p开始取一直到某个字母<=0为止)o=1;.....(和前面不一样,是逆过来,从负的最大开始但权重以1开始增加知道某个字母为>=0)
W1 = 26*13+25*9+......+(-17)*1

2).再反过来算一次,即p=1;c=2.......(一直到某个字母<=0);o=26....(一直到某个字母>=0);
w2 = 1*13+2*9.....+26*(-17);

然后比较w1和w2哪个大,哪个大,哪种设置权重就是合适的
posted @ 2013-09-13 14:09  梧桐树下的一缕阳光  阅读(267)  评论(1编辑  收藏  举报