zoukankan      html  css  js  c++  java
  • hdu 5455 Fang Fang

    F题 Fang Fang

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5455

    题意:F0 = f

       F1 = ff

       F2 = cff

       后面的每一个在前一个基础上加一个f

       求一个字符串首尾相连最少用多少个F可以表示完

    思路:分有c和无c的情况,无c时则全部由F0 和F1 组成

    有c时则考虑c后的f个数至少为2, 首尾的f可单独计数再比较(

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cmath>
     5 #include <cstring>
     6 
     7 using namespace std;
     8 
     9 const int N = 1e6 + 10;
    10 char str[N], ch[2];
    11 
    12 int main()
    13 {
    14     int t,ca = 0, ans;
    15     cin>>t;
    16     while(t -- ){
    17         ca ++ ;
    18         ans = 0;
    19         printf("Case #%d: ", ca);
    20         int flag1 = 0;//flag1首有多少f,flag3中有多少f
    21         bool flag2 = false;//flag2:是否遇见c
    22         scanf("%s", str);
    23         gets(ch);
    24         bool f = true;
    25         int l = strlen(str);
    26         for(int i = 0, j = 1; i < l; i += j, j = 1){
    27             int flag3 = 0;
    28 
    29             if(!flag2 && str[i] == 'f') flag1 ++ ;
    30             else flag2 = true;
    31             if(flag2){
    32                 while(str[i+j] == 'f'){
    33                     flag3 ++ ;
    34                     j ++ ;
    35                 }
    36                 if(flag3 <= 1 && i + j <= l - 1) f = false;
    37 
    38                 if((i == l - 1 && str[i] == 'c') || (i + j == l)){
    39                     if(flag3 + flag1 <= 1) f = false;
    40                 }
    41                 if(!f) break;
    42                 else ans ++ ;
    43             }
    44             if(!flag2 && i == l - 1){
    45                 if(flag1 % 2 == 1) ans = flag1 / 2 + 1;
    46                 else ans = flag1 / 2;
    47             }
    48         }
    49         if(f) printf("%d
    ", ans);
    50         else printf("-1
    ");
    51     }
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    计时器
    画刷
    研究:窗口映射
    文本和字体
    MFC源码实现文件对照表
    动态链接库编程:非MFC DLL
    对话框
    C/C++的Name Mangling
    MFC框架仿真<四>动态创建
    MFC框架仿真<三>R T T I
  • 原文地址:https://www.cnblogs.com/moomight/p/11419929.html
Copyright © 2011-2022 走看看