• Codeforces 156 A——Message——————【思维题】


    A. Message
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Dr. Moriarty is about to send a message to Sherlock Holmes. He has a string s.

    String p is called a substring of string s if you can read it starting from some position in the string s. For example, string "aba" has six substrings: "a", "b", "a", "ab", "ba", "aba".

    Dr. Moriarty plans to take string s and cut out some substring from it, let's call it t. Then he needs to change the substring t zero or more times. As a result, he should obtain a fixed string u (which is the string that should be sent to Sherlock Holmes). One change is defined as making one of the following actions:

    • Insert one letter to any end of the string.
    • Delete one letter from any end of the string.
    • Change one letter into any other one.

    Moriarty is very smart and after he chooses some substring t, he always makes the minimal number of changes to obtain u.

    Help Moriarty choose the best substring t from all substrings of the string s. The substring t should minimize the number of changes Moriarty should make to obtain the string u from it.

    Input

    The first line contains a non-empty string s, consisting of lowercase Latin letters. The second line contains a non-empty string u, consisting of lowercase Latin letters. The lengths of both strings are in the range from 1 to 2000, inclusive.

    Output

    Print the only integer — the minimum number of changes that Dr. Moriarty has to make with the string that you choose.

    Examples
    input
    aaaaa
    aaa
    output
    0
    input
    abcabc
    bcd
    output
    1
    input
    abcdef
    klmnopq
    output
    7
    Note

    In the first sample Moriarty can take any substring of length 3, and it will be equal to the required message u, so Moriarty won't have to make any changes.

    In the second sample you should take a substring consisting of characters from second to fourth ("bca") or from fifth to sixth ("bc"). Then you will only have to make one change: to change or to add the last character.

    In the third sample the initial string s doesn't contain any character that the message should contain, so, whatever string you choose, you will have to make at least 7 changes to obtain the required message.

    题目大意:给你两个串a,b,只能在尾部增删字符,可以在任意位置改变字符,问你最少需要多少次改变,让a中的字串变为b。

    解题思路:直接找到最长可以匹配的字符个数,然后最后用len2-ans就是最少需要改动的次数。

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<string>
    #include<iostream>
    #include<queue>
    #include<stack>
    #include<map>
    #include<vector>
    #include<set>
    using namespace std;
    typedef long long LL;
    #define mid (L+R)/2
    #define lson rt*2,L,mid
    #define rson rt*2+1,mid+1,R
    #pragma comment(linker, "/STACK:102400000,102400000")
    const int maxn = 1e3 + 300;
    const int INF = 0x3f3f3f3f;
    typedef long long  LL;
    typedef unsigned long long ULL;
    char s1[maxn*2],s2[maxn*2];
    int dp[maxn*2][maxn*2];
    int main(){
        while(scanf("%s%s",s1+1,s2+1)!=EOF){
            int len1, len2;
            len1 = strlen(s1+1);
            len2 = strlen(s2+1);
            int ans = 0;
            for(int i = 1; i <= len1; i++){
                for(int j = 1;  j <= len2; j++){
                    ans = max(ans, dp[i][j] = dp[i-1][j-1] + (s1[i] == s2[j]) );
                }
            }
            //for(int i = 1; i <= len1; i++){
             //   for(int j = 1; j <= len2; j++){
             //       printf("%d ",dp[i][j]);
             //   }puts("");
          //  }
    
            cout<<len2 - ans<<endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    SAP 增强篇 Method1 BADI增强的查找方法
    增强篇2 生产订单屏幕增强
    增强篇1 PO保存增强
    ABAP DEMO篇21 选择屏幕显示说明TEXT
    ABAP字符串操作1 检查字段小数位的长度
    采购信息记录批导BAPI
    POPUP_GET_VALUES 金额字段不可编辑
    使用弹窗批量修改数据POPUP_GET_VALUES
    Win10手记-取色器ColorPicker的实现
    ASP.NET Web API实现微信公众平台开发(三)自定义菜单
  • 原文地址:https://www.cnblogs.com/chengsheng/p/5550233.html
Copyright © 2020-2023  润新知