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需要从最后的状 ...
随机推荐
- 新建Java文件的 文档注释
/** * <br> * ============================================= * * @author : Liuyc * @company : 版权 ...
- Orchard part8
http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-part-8 定 ...
- case while for
#!/bin/bash#create by howhy 20161214#mysql server start stop restart. /etc/init.d/functionsmysqldir= ...
- Python之反射
一.引言 有时候我们会碰到类似这样的需求,就是想要执行类的某个方法,或者需要对对象的某个参数赋值,而方法名或参数名已经包装在类中并不能去顶,需要通过参数传递字符串的形式输入.在这样的情况你会选择什么样 ...
- oracle 卸载
由于工作需要,重装了一下Oracle,然后发现同SQLServer,MySQL等数据库相比,Oracle的卸载重装真是不一般的麻烦. 整理了一下我的Oracle的卸载重装过程,给自己备忘,同时 ...
- [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...
- Hibernate的关联映射——单向N-1关联
Hibernate的关联映射--单向N-1关联 N-1是非常常见的关联关系,最常见的父子关系也是N-1关联,单向的N-1关联只需从N的一端可以访问1的一端. 为了让两个持久化类能够支持这种关联映射,程 ...
- [问题2015S14] 复旦高等代数 II(14级)每周一题(第十五教学周)
[问题2015S14] 设 \(J=\begin{pmatrix} 0 & I_n \\ -I_n & 0 \\ \end{pmatrix}\), \(A\) 为 \(2n\) 阶实 ...
- IOS开发之异步加载网络图片并缓存本地实现瀑布流(二)
/* * @brief 图片加载通用函数 * @parma imageName 图片名 */ - (void)imageStartLoading:(NSString *)imageName{ NSUR ...
- Consul Template的简单使用
Consul Template的使用 1安装 地址 https://github.com/hashicorp/consul-template/releases wget https://release ...