zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    NTP服务器
    sublime中文设置
    13、软件定时器
    晶振和CPU周期
    红外通信协议
    KEIL使用时的一些配置
    STM32 的内部 FLASH
    STM32的程序下载
    2、触摸屏
    目录
  • 原文地址:https://www.cnblogs.com/depth/p/5671757.html
Copyright © 2011-2022 走看看