zoukankan      html  css  js  c++  java
  • HDU 1708 简单dp问题 Fibonacci String

    Fibonacci String

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 4568    Accepted Submission(s): 1540


    Problem Description
    After little Jim learned Fibonacci Number in the class , he was very interest in it.
    Now he is thinking about a new thing -- Fibonacci String .

    He defines : str[n] = str[n-1] + str[n-2] ( n > 1 )

    He is so crazying that if someone gives him two strings str[0] and str[1], he will calculate the str[2],str[3],str[4] , str[5]....

    For example :
    If str[0] = "ab"; str[1] = "bc";
    he will get the result , str[2]="abbc", str[3]="bcabbc" , str[4]="abbcbcabbc" …………;

    As the string is too long ,Jim can't write down all the strings in paper. So he just want to know how many times each letter appears in Kth Fibonacci String . Can you help him ?
     
    Input
    The first line contains a integer N which indicates the number of test cases.
    Then N cases follow.
    In each case,there are two strings str[0], str[1] and a integer K (0 <= K < 50) which are separated by a blank.
    The string in the input will only contains less than 30 low-case letters.
     
    Output
    For each case,you should count how many times each letter appears in the Kth Fibonacci String and print out them in the format "X:N".
    If you still have some questions, look the sample output carefully.
    Please output a blank line after each test case.

    To make the problem easier, you can assume the result will in the range of int.
     
    Sample Input
    1 ab bc 3
     
    Sample Output
    a:1 b:3 c:2 d:0 e:0 f:0 g:0 h:0 i:0 j:0 k:0 l:0 m:0 n:0 o:0 p:0 q:0 r:0 s:0 t:0 u:0 v:0 w:0 x:0 y:0 z:0
     
    Author
    linle
     
    Source
     
    Recommend
    lcy   |   We have carefully selected several similar problems for you:  1709 1710 1707 1714 1721 
     
     
     
    其实也完全可以用模拟来解决,不过非常麻烦2
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int dp[55][30];
    char str1[35],str2[35];
    int main(){
       int t;
       scanf("%d",&t);
       while(t--){
            memset(dp,0,sizeof(dp));
            memset(str1,0,sizeof(str1));
            memset(str2,0,sizeof(str2));
          getchar();
          int k;
          scanf("%s %s %d",str1,str2,&k);
          int len1=strlen(str1);
          int len2=strlen(str2);
          for(int i=0;i<len1;i++)
            dp[0][str1[i]-'a']++;
          for(int i=0;i<len2;i++)
            dp[1][str2[i]-'a']++;
          for(int i=2;i<=k;i++){
              for(int j=0;j<26;j++)
                dp[i][j]=dp[i-1][j]+dp[i-2][j];
          }
        for(int i=0;i<26;i++)
            printf("%c:%d
    ",i+97,dp[k][i]);
        printf("
    ");
        
       }
       return 0;
    }
  • 相关阅读:
    性能测试流程
    性能测试关注的指标
    什么样的系统需要做性能测试
    python数据类型-列表
    python-数据类型-元组
    python自动化第二课
    python自动化第二课
    内存泄漏和内存溢出
    程序中必须知道的几种命名规范
    超级详细安装jmeter的教程(亲测)
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/4668360.html
Copyright © 2011-2022 走看看