LD编辑距离算法-->可用于聊天系统的刷屏控制
来源:互联网 发布:句子迷 知乎 编辑:程序博客网 时间:2024/04/18 18:38
/*1 Set n to be the length of s.Set m to be the length of t.If n = 0, return m and exit.If m = 0, return n and exit.Construct a matrix containing 0..m rows and 0..n columns.2 Initialize the first row to 0..n.Initialize the first column to 0..m.3 Examine each character of s (i from 1 to n).4 Examine each character of t (j from 1 to m).5 If s[i] equals t[j], the cost is 0.If s[i] doesn't equal t[j], the cost is 1.6 Set cell d[i,j] of the matrix equal to the minimum of:a. The cell immediately above plus 1: d[i-1,j] + 1.b. The cell immediately to the left plus 1: d[i,j-1] + 1.c. The cell diagonally above and to the left plus the cost: d[i-1,j-1] + cost.7 After the iteration steps (3, 4, 5, 6) are complete, the distance is found in cell d[n,m].*/#include <iostream>#include <vector>#include <string>using namespace std;int ldistance(const string source,const string target){ int n=source.length(); int m=target.length(); if (m==0) return n; if (n==0) return m; typedef vector< vector<int> > Tmatrix; Tmatrix matrix(n+1); for(int i=0; i<=n; i++) matrix[i].resize(m+1); for(int i=1;i<=n;i++) matrix[i][0]=i; for(int i=1;i<=m;i++) matrix[0][i]=i; for(int i=1;i<=n;i++) { const char si=source[i-1]; for(int j=1;j<=m;j++) { const char dj=target[j-1]; int cost; if(si==dj){ cost=0; } else{ cost=1; } const int above=matrix[i-1][j]+1; const int left=matrix[i][j-1]+1; const int diag=matrix[i-1][j-1]+cost; matrix[i][j]=min(above,min(left,diag)); } } return matrix[n][m];}int main(){ string s; string d; cout<<"source="; cin>>s; cout<<"diag="; cin>>d; int dist=ldistance(s,d); cout<<"dist="<<dist<<endl;}
本人用该程序在聊天服务器内部识别刷屏用户,效果不错
- LD编辑距离算法-->可用于聊天系统的刷屏控制
- 编辑距离(LD)算法的python实现
- 编辑距离算法(LD)详解
- 编辑距离算法(LD)详解
- LD 算法实现(编辑距离算法)
- LD 算法实现(编辑距离算法)
- 计算编辑距离的算法
- 编辑距离算法的实现
- 字符串的编辑距离和编辑距离算法
- 可用于J2ME的GZip算法包
- 编辑距离算法的java实现
- 经典算法求字符串的编辑距离
- 编辑距离与编辑算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 趣味智力题:过桥
- KMP算法
- 火星人谚语系列之五:答案将由我在下一分钟给出(心想事成)
- QT4.7 vs2010
- c# 调用CMD命令执行dos命令
- LD编辑距离算法-->可用于聊天系统的刷屏控制
- Google与微软争夺李开复揭秘,比尔盖茨曾国骂伤人
- bresenham算法
- java克隆中String的特殊性
- erlang学习笔记
- quest启动就报错"QCC10000E -Unable to allocate environment handle" 修改path
- SQLite 入门教程(一)基本控制台(终端)命令
- Yt7589的专栏
- How To Clear A Browser Cache