hdoj 4323
题意:给你n个数,m个查询,查询中包括一个数和一个最大编辑距离d,问n个数中和这个数的编辑距离不超过d的有多少个
编辑距离:http://baike.baidu.com/view/2020247.htm?from_id=792226&type=syn&fromtitle=Levenshtein+Distance&fr=aladdin
思路:设dp[i][j]为数字a前i个数和数字b前j个数的编辑距离
则dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1+1,dp[i-1][j-1]+cost)
交一发,T了,这里有个小小的优化,若两个数的长度之差大于最大编辑距离d,则不必再求他们之间的编辑距离
代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"
#define INF 1000
char a[][],b[];
int dp[][];
int min(int a,int b)
{
return a<b?a:b;
}
void debug(int len1,int len2)
{
int i,j;
for(i=;i<=len1;i++)
{for(j=;j<=len2;j++)
printf("%d ",dp[i][j]);
printf("\n");
}
}
int slove(char a[],char b[])
{
int len1,len2;
int i,j;
int cost;
len1=strlen(a);
len2=strlen(b);
memset(dp,,sizeof(dp));
for(i=;i<len1;i++)
dp[i+][]=i+;
for(i=;i<len2;i++)
dp[][i+]=i+;
for(i=;i<len1;i++)
{
for(j=;j<len2;j++)
{
if(a[i]==b[j])
cost=;
else
cost=;
dp[i+][j+]=min(dp[i][j+]+,dp[i+][j]+);
dp[i+][j+]=min(dp[i][j]+cost,dp[i+][j+]);
}
}
//printf("%s %s:\n",a,b);
//debug(len1,len2);
return dp[len1][len2];
}
int main()
{
int n,m;
int t;
int i,j;
int d,cas=;
int ans;
int len1,len2;
scanf("%d",&t);
while(t--)
{
cas++;
printf("Case #%d:\n",cas);
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
scanf("%s",a[i]);
while(m--)
{
ans=;
scanf("%s%d",b,&d);
for(j=;j<n;j++)
{
len1=strlen(a[j]);
len2=strlen(b);
if(abs(len1-len2)>d)
continue;
if(slove(a[j],b)<=d)
ans++;
}
printf("%d\n",ans);
}
}
return ;
}
hdoj 4323的更多相关文章
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- HDOJ 1326. Box of Bricks 纯水题
Box of Bricks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDOJ 1004 Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- hdoj 1385Minimum Transport Cost
卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...
- HDOJ(2056)&HDOJ(1086)
Rectangles HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...
- 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...
- 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design
题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...
- BFS(八数码) POJ 1077 || HDOJ 1043 Eight
题目传送门1 2 题意:从无序到有序移动的方案,即最后成1 2 3 4 5 6 7 8 0 分析:八数码经典问题.POJ是一次,HDOJ是多次.因为康托展开还不会,也写不了什么,HDOJ需要从最后的状 ...
随机推荐
- 更新数据前jquery如何填充数据到表单域中
$("#p_city option[value='${project.city}']").attr("selected","selected" ...
- 14. 星际争霸之php设计模式--状态模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- opencv的学习笔记1
想在周末去游泳,找了些游泳的注意事项什么的,想想还没干正事,就来继续看看opencv的使用吧,晚上看了opencv的一些基本入门的东西,打算下面主要总结CSDN上一个大牛的博文,链接如下:http:/ ...
- Together
- VS 编辑并继续(转载)
转]Microsoft Visual Studio vs2008 vs2010 调试 编辑 修改 代码 在vs2008的文件菜单下,前两个菜单项分别是新建项目 和 新建网站. 这两项里,都可以建web ...
- 编写高性能Web应用程序的10个技巧
这篇文章讨论了: ·一般ASP.NET性能的秘密 ·能提高ASP.NET表现的有用的技巧和窍门 ·在ASP.NET中使用数据库的建议 ·ASP.NET中的缓存和后台处理 使用ASP.NET编写一个We ...
- quay.io/coreos/etcd 基于Docker镜像的集群搭建
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理 ...
- Moving Tables(贪心或Dp POJ1083)
Moving Tables Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28304 Accepted: 9446 De ...
- (1) 深入理解Java虚拟机到底是什么?
好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java ...
- Android属性动画完全解析(下)
转载:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中我们学习了 ...