• UVA1588


    数据不大,暴力过。纳闷的是长度是1~100,数组开150都不行,必须要200才不会WA。

    思路:注意双向匹配。for(int i=0;i<2;i++,swap(str1,str2))。记录两个字符串匹配到的数目,两个长度相加减去匹配到的数目即可。

      匹配过程:b串不动,a串从b串第一个字符开始匹配,可行的话继续向后匹,直到a串匹完;不可行的话在b串上向后推一个。

      到今天才知道,输入字符串之后cin>>str1,不会完全刷新之前的,而仅仅是将其最后一个字符后面的一个字符变成'',其后的如果之前输入过则会保留。

      所以要memset(str,0,sizeof(str)).

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        char str1[205],str2[205];
        while(cin>>str1>>str2)
        {
            int ans[2]={300,300};
            for(int k=0;k<2;k++,swap(str1,str2))
            {
                int len1,len2,i=0,j=0,J=0;
                len1=strlen(str1);
                len2=strlen(str2);
                int plen=0;
                while(J<len2)
                {
                    j=J,i=0;
                    while(i<len1)
                    {
                        if(!(str1[i]=='2'&&str2[j]=='2'))
                        {
                            if(str1[i]&&str2[j])    plen++;
                            i++;
                            j++;
                        }
                        else{
                            J++;
                            i=0;
                            plen=0;
                            break;
                        }
                    }
                    if(i==len1)
                    {
                        int a=len1+len2-plen;
                            ans[k]=ans[k]<a?ans[k]:a;
                            break;
                    }
                }
                if(ans[k]==300)    ans[k]=len1+len2;
            }
            cout<<min(ans[0],ans[1])<<endl;
            memset(str1,0,sizeof(str1));
            memset(str2,0,sizeof(str2));
        }
        return 0;
    }
  • 相关阅读:
    可以自己设计和定的报表工具!
    金山词霸取词冲突
    SSRS 2008 Domain User Issue
    第一次用AX2009正式版!
    顶级会议及期刊
    Python基础常识
    Ubuntu系统下查看安装的CUDA和CUDNN的版本
    js内字符串转数组的基本方法
    JavaScript之逻辑分支
    JS入门
  • 原文地址:https://www.cnblogs.com/depth/p/5671757.html
Copyright © 2020-2023  润新知