zoukankan      html  css  js  c++  java
  • CF977B Two-gram 题解

    话说这题就是暴力枚举orz

    (好像那次比赛是div3)

    就是要你求一个字符串内出现数量最多的两位子串,如果有多个就输出任意一个就行了。

    说明中说了:

    ```
    In the first example "BA" is also valid answer.
    ```

    但是@静静是我的,在本题写的题解里说输出字典序最小的?题目里并没有说必须输出字典序最小的啊qwq。。希望@静静是我的,能够尽快更改一下,谢谢

    既然是两位字串那不就可以暴力枚举了吗

    直接上代码

    $code$

    #include<cstdio>
    #include<string>
    #include<iostream> 
    using namespace std; 
    int main() {
        int n, maxs=0, x; //x在输出的时候有用,后面有解释
        scanf("%d", &n);
        char s[101]; //用string也行
        for(int i=1; i<=n; i++) cin>>s[i]; //把字符串输入进来
        for(int i=1; i<n; i++) { //注意不能枚举到n,只能枚举到n-1
            //写了外层循环后就出来了一个两位子串:s[i]和s[i+1]
            int t=1; //统计有多少子串跟s[i]和s[i+1]这个子串一样,初始化为1
            for(int j=i+1; j<n; j++)
                //这个内层循环又出来了一个两位子串:s[j]和s[j+1]
                if((s[i]-'0')==(s[j]-'0')&&(s[i+1]-'0')==(s[j+1]-'0')) t++; //如果两个两位子串完全相同,t自加1
            if(t>maxs) { //如果有更好的答案就更新答案
                maxs=t;
                x=i; //x把当前答案(两位子串)的第一位的编号保存了下来
            }
        }
        cout<<s[x]<<s[x+1]; //然后输出就行了
        return 0;
    }
    转载是允许的,但是除了博主同意的情况下,必须在文章的明显区域说明出处,否则将会追究其法律责任。
  • 相关阅读:
    C++中的类模板详细讲述
    函数模板和模板函数
    vs2008 快捷键大全
    #宏定义##
    多工程项目设置
    conemu 配置
    itcast-svn
    itcast-spring-三大框架整合
    Spring通知方法错误
    动态代理
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/9551131.html
Copyright © 2011-2022 走看看