zoukankan      html  css  js  c++  java
  • 广工校赛——GG的匹配串

    Description

    2015年广东工业大学ACM校赛要来~(≧▽≦)/~辣辣辣,作为校赛的出题人之一,GG想出了一道水题来考考大家。相信小伙伴们都学过字符串匹配,于是字符串匹配的水题就诞生辣!GG给出了一段长度为N的大写字母序列,现在他要你修改这一段字母序列,使得这段字母序列上最前面的K个字母组成的序列与最后面的K个字母组成的序列一一匹配。 
     
    例如对于序列“ATUUUUAC”和K = 2,可以通过将第二个字母修改为“C”,使得最前面的两个字母与最后面的两个字母都为“AC”,当然 还存在其他的修改方法,现在GG要求你求出要使字符串匹配至少需要修改多少个字母。

    Input

    有T组数据输入。(T <= 100) 
    每组数据只有两行,第一行为一个字符串,第二行为一个正整数K,字符串的长度不会超过1000,且至少为1。(1 <= K <= N)。

    Output

    对于每组数据输出至少需要修改的字母数量

    Sample Input

    2 ATUUUUAC 2 ATACGTCT 6

    Sample Output

    1 3

    HINT

    大意:题目意思一直理解错,应该为就是一串,而且是修改的总次数,不是字母修改的数量- -||语文有待提升

    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int ans;
    char ch[1100];
    int arr[26];
    int T,k,n;
    int f(int x)
    {
        memset(arr,0,sizeof(arr));
        int re = 0;
        int r= 0;
        while( x < n){
                r++;
               arr[ch[x]-'A']++;
               x+=n-k;
        }
        for(int i = 0; i < 26; i++)
            re = max(re,arr[i]);
        return r-re;
    }
    int main()
    {
        scanf("%d",&T);
        while(T--){
                scanf("%s%d",ch,&k);
               n = strlen(ch);
            int ans = 0;
            for(int i = 0 ; i < k && i < n - k; i++)
                ans += f(i);
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    第四周助教小结
    java课程总结
    第十四周总结
    第十三周实验报告
    第十二周课程报告
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4344541.html
Copyright © 2011-2022 走看看