zoukankan      html  css  js  c++  java
  • 【字符串/回文子串个数】大战幻想珠

    题目描述

    烤乐滋又生日了!占虽然过去了整整一年,可他还是对去年发生的炸弹事件充满阴影。于是决定不让来访的好友们自带礼物。
    但生日怎么能没有礼物昵?烤乐滋决定拿出他的幻想珠串来.幻想珠是一颗上面写着小写英文字母的珠子。有些珠子自带神奇的魔力,上面写着一个”?”,就表示这颗珠子可以表示任意一个小写英文字母。幻想珠串是长长的一个个幻想珠首尾相连组成的串。烤乐滋决定,让每个朋友从这个珠串中挑选一段连续的串送给自己。
    烤乐滋很喜欢回文(从前往后和从后往前读一样),于是他希望朋友挑选出的串都是回文的。比如”ababa”和” acd?a”都是回文的,而”a?d?c”就不是回文的。
    烤乐滋想要知道,整个幻想珠串中一共能挑选出多少个回文的子串。两个位置不同内容相同的子串我们也视作是不同的子串。

    输入

    第一行一个数n(n≤3000),表示幻想珠串的长度。
    第二行一个有n 个字符.只可能是小写字母或”?”。字符之间没有多余空格。

    输出

    一行一个数表示答案。
     
     
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    char mp[10005];
    int n,ant;
    void work()
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;i+j<n&&i-j>=0;j++)
            {
                if(mp[i+j]==mp[i-j])
                    ant++;
                else if(mp[i+j]=='?'||mp[i-j]=='?')
                    ant++;
                else
                    break;
            }
            for(int j=0;i+j<n&&i-j-1>=0;j++)
            {
                if(mp[i+j]==mp[i-j-1])
                    ant++;
                else if(mp[i+j]=='?'||mp[i-j-1]=='?')
                    ant++;
                else
                    break;
            }
        }
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%s",mp);
        work();
        printf("%d
    ",ant);
        return 0;
    }
  • 相关阅读:
    子组件 调用父组件方法
    加载进度条
    form 验证 自定义
    关于读取本地text文件,自动被添加空格的问题
    关于form表单中button按钮自动提交问题
    正态分布折线图/直方图相关方法以及概念
    大于0的数字(包含小数和整数)的正则表达式
    bigdecimal类型除法问题
    添加数据库的Maven依赖(SqlServer,Oracle)
    JS中null与undefined的区别
  • 原文地址:https://www.cnblogs.com/Diliiiii/p/10267416.html
Copyright © 2011-2022 走看看