Kickdown UVA

来源:互联网 发布:初中语文老师知乎 编辑:程序博客网 时间:2024/05/30 04:59

https://vjudge.net/problem/UVA-1588

Kickdown UVA - 1588

一块一块区域的枚举匹配
保留下符合匹配的最小值
就是一点点的挪下去

#include<iostream>#include<string>#include <algorithm>#include <cstring>#include <cmath>#include <map>#include <cstdio>using namespace std;int d[100000],p[100000];int main(){    string a,b;    while(cin>>a>>b)    {        if(strlen(&a[0])>strlen(&b[0])) swap(a,b);        int j;        int z=1;        int mins=1000000;        int l=strlen(&a[0]),r=strlen(&b[0]);        for(int i=strlen(&a[0]);i>=0;i--)//a的末尾开始匹配b的开头        {            j=0;            int k=i;            int z=1;            while(k<strlen(&a[0]))            {                int x=a[k]-48;                int y=b[j]-48;                if(x+y>3)                {                    z=0;                    break;                }                k++;                j++;            }            //cout<<i<<' '<<r<<' '<<z<<endl;            if(z) mins=min(mins,i+r);        }        //cout<<mins<<endl;        z=1;        for(int i=0;b[i];i++)//a的开头 开始匹配b的每个区域        {            for(j=0;a[j];j++)            {                int x=b[i+j]-48;                int y=a[j]-48;                if(x+y>3) break;            }            if(!a[j])            {                z=0;                mins=min(mins,i+l);                break;            }        }        cout<<max(mins,r)<<endl;    }}
0 0
原创粉丝点击