• HDU 5455 Fang Fang 水题,但题意描述有问题


    题目大意:f[1]=f,f[2]=ff,f[3]=ffc,以后f[n]每增加1,字符串增加一个c。给出一个字符串,求最少有多少个f[]组成。(字符串首尾相连,比如:ffcf可看做cfff)

    题目思路:判断多少个c,但是每个c之间必须有两个f,首尾的c也应判断首尾相连后两者之间的距离。坑点在与

    1.给出的字符串中可能包含其它字符

    2.严格按照gets()读入

    3.若不含c,求有多少个f[2],若有多余补上一个f[1]

    3.1.出题人神经病

    #include<cstdio>
    #include<stdio.h>
    #include<cstdlib>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    #include<queue>
    #define INF 0x3f3f3f3f
    #define MAX 1000100
    #define mod 1000000007
    
    using namespace std;
    
    char str[MAX];
    int index[MAX];//存储每个c的位置
    
    int check()
    {
        int len,i,j,ans=0,sum=0,ok=0,flag=0,cnt=1;
        memset(index,0,sizeof(index));
        len=strlen(str);
        if(len==0)
            return -1;
        for(i=0;i<len;i++)
        {
            if(str[i]=='c')
            {
                index[cnt++]=i;
                sum++;
            }
            else if(str[i]!='c' && str[i]!='f')//存在其他字符直接返回0
                return 0;
        }
        cnt--;
    
        if(sum  > (len-1)/2)
            return 0;
        for(i=2;i<=cnt;i++)
        {
            if(index[i] - index[i-1] <= 2)//每个c至少相隔2个单位
                return 0;
        }
        if(cnt > 1)//判断收尾的c之间的距离
        {
            int k=len-(index[cnt]-index[1]);//
            if(k <= 2)
                return 0;
        }
    
        if(sum==0)//如果没有c,求str中有多少个f【2】,不够上一个补f【1】
        {
            return (len+1)/2;
        }
    
        return sum;
    }
    int main()
    {
        int T,ans,cnt=1;
        scanf("%d",&T);
        getchar();
        while(T--)
        {
            gets(str);
            ans=check();
            if(ans==0)
                ans=-1;
            else if(ans==-1)
                ans=0;
            printf("Case #%d: %d
    ",cnt++,ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    常用软件列表
    Mybatis源码分析
    百度高效研发实战训练营Step4
    百度高效研发实战训练营Step2
    百度高效研发实战训练营Step1
    百度高效研发实战训练营Step3
    【WPF】FontAwesome图标字体下载及在WPF中的使用
    Vision MLP | ActiveMLP: An MLPlike Architecture with Active Token Mixer
    返回与数据列表中不重复的数据
    算法题焦虑的蚂蚁
  • 原文地址:https://www.cnblogs.com/alan-W/p/5791582.html
Copyright © 2020-2023  润新知