题意:给你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的更多相关文章

  1. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  5. hdoj 1385Minimum Transport Cost

    卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...

  6. HDOJ(2056)&HDOJ(1086)

    Rectangles    HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...

  7. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  8. 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design

    题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...

  9. BFS(八数码) POJ 1077 || HDOJ 1043 Eight

    题目传送门1 2 题意:从无序到有序移动的方案,即最后成1 2 3 4 5 6 7 8 0 分析:八数码经典问题.POJ是一次,HDOJ是多次.因为康托展开还不会,也写不了什么,HDOJ需要从最后的状 ...

随机推荐

  1. jQuery文字特效制作文字鼠标滑过多彩色变色显示

    <!DOCTYPE html><head> <meta http-equiv="Content-Type" content="text/ht ...

  2. ligerui_ligerTree_006_ligerui事件支持

    ligerui:ligerTree事件支持: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 效果图: 代码:json.txt [ ...

  3. C# 数字带逗号(千分位符、金钱千分位字符)

    首先要明确带了逗号之后  数字就变成字符串了 ,不再是数字了. 昨天做项目的时候需要格式化数字变成带逗号的,本来打算自己写个方法的,后来时间太紧了,就打算从网上查个,查来查去都是要对字符串的位进行操作 ...

  4. Qt之键盘讲解

    QWSInputMethod详解 注意:这个类不仅仅在嵌入式环境下有效 一个输入法包括了过滤器和可选的图形界面,用来过滤服务器和客户端应用程序之间 的输入事件. 创建自定义的输入法,需要得自QWSIn ...

  5. Azure sdk for python

    http://www.oschina.net/translate/python-windows-azure Len  6:17:54 PM __author__ = 'len.li' from azu ...

  6. 【Linux命令与工具】系统资源查看——free、uname、dmesg以及netstat

    free:查看内存的使用情况 用法: free [-b|-k|-m|-g] [-t] 参数: -b: 直接输入free时,显示的单位是KB我们可以使用b(bytes), m(MB), k(KB), g ...

  7. Android ActionBar的基本用法

    一  说明android 3.0后出现, 在3.0之前称为Title Bar  显示位置在标题栏上可以显示应用程序的图标和activity的标题创建方式的和系统菜单相似, 区别在于: android: ...

  8. sql server数据库语句

    -- 3-5  创建表Studnetcreate table Student(Sno char(9) primary key,Sname char(20) UNIQUE,Ssex CHAR(2),Sa ...

  9. [poj2777] Count Color (线段树 + 位运算) (水题)

    发现自己越来越傻逼了.一道傻逼题搞了一晚上一直超时,凭啥子就我不能过??? 然后发现cin没关stdio同步... Description Chosen Problem Solving and Pro ...

  10. lambda的使用ret = filter(lambda x : x > 22 ,[11,22,33,44])

    #!/usr/bin/env python #def f1(x) : # return x > 22 ret = filter(lambda x : x > 22 ,[11,22,33,4 ...