Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240202
  • 博文数量: 49
  • 博客积分: 2591
  • 博客等级: 少校
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 00:03
文章分类

全部博文(49)

文章存档

2009年(3)

2008年(46)

我的朋友

分类:

2008-12-12 14:01:46

给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词。
 
解答:
定义 操作 F(A1,A2,A3....An)=P(A1)*P(A2)*P(A3).....P(An);

其中 P(A1)= PrimeNum[A1-'a'],
    PrimeNum 是从2开始的连续 素数 数组(2,3,5,7,.....)

示例:
    F(bad)=P(b)*P(a)*P(d)=3*2*7=42

    遍历字典,求每个单词的F()操作值,如果相等就是,不等就下一个

这里是利用了不同字符对应不同的素数,而不同素数的乘积是肯定不相同的

利用了hash的思想,不同的字符串产生不同的数字ID,将字典排序后就可以很快得到ID分布,从而得到匹配的数量

可以跟内容可寻址存储器(CAM)联系起来,得到更多的应用

阅读(2441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~