CodeForces

来源:互联网 发布:应用引擎怎么上传源码 编辑:程序博客网 时间:2024/05/16 19:36

题目大意:

给你两个字符串,问你如何匹配可以改动最少的字符使得A字符串为B字符串的一个子串。

分析:

暴力匹配O(n^2)的复杂度足够了。注意记录下最优匹配时每个需要变换的位置。

代码:

#include<bits/stdc++.h>using namespace std;#define maxn 1050char a[maxn];char b[maxn];int m,n;int c[maxn];int main(){    scanf("%d%d",&n,&m);    scanf("%s",a);    scanf("%s",b);    int ans=maxn;    for(int i=0;i<=m-n;i++)    {        int num=0;        int t[maxn];        for(int j=0;j<n;j++)        {            if(a[j]!=b[j+i])            {                t[num]=j+1;                num++;            }        }        if(num<ans)        {            ans=num;            for(int i=0;i<num;i++)            {                c[i]=t[i];            }        }    }    if(ans==0)    {        printf("0\n");        return 0;    }    printf("%d\n%d",ans,c[0]);    for(int i=1;i<ans;i++)    {        printf(" %d",c[i]);    }}
原创粉丝点击