zoukankan      html  css  js  c++  java
  • HDOJ(HDU) 1708 Fibonacci String

    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

    格式:每个案例后面都有一个空行!!!

    不能直接用字符串相加来做,因为可能到后面会超内存!累加到后面的字符串太长了!!!

    所以换位思考,既然是统计字母的个数,为什么不直接来建立整型数组呢。
    只要统计出str0和str1中各个字母的个数就可以了。
    后面各个字母个数的按照公式来推就行。

    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args) {
            long num[][] = new long[56][26];
            Scanner sc = new Scanner(System.in);
            int t = sc.nextInt();
            while(t-->0){
                for(int i=0;i<num[0].length;i++){
                    for(int j=0;j<num.length;j++){
                        num[j][i]=0;
                    }
                }
                String str0 = sc.next();
                for(int i=0;i<str0.length();i++){
                    for(int j='a';j<='z';j++){
                        if(str0.charAt(i)==(char)j){
                            num[0][j-'a']++;
                            break;
                        }
                    }
                }
                String str1 = sc.next();
                for(int i=0;i<str1.length();i++){
                    for(int j='a';j<='z';j++){
                        if(str1.charAt(i)==(char)j){
                            num[1][j-'a']++;
                            break;
                        }
                    }
                }
                int n = sc.nextInt();
                for(int i=2;i<=n;i++){
                    for(int k='a';k<='z';k++){
                        num[i][k-'a'] = num[i-1][k-'a']+num[i-2][k-'a'];
                    }
                }
    
                for(int k='a';k<='z';k++){
                    System.out.println((char)k+":"+num[n][k-'a']);
                }
                System.out.println();
    
            }
        }
    
    
    }
    
  • 相关阅读:
    GoGin 跨域处理
    Vue sso认证快速接入实践
    领域驱动设计(DDD):项目目录(包、模块)结构
    高绩效团队建设与管理系列课程
    VR设备产业链
    Supercell资深策划谈三大产品制作经验:游戏设计就像丛林探险,必须险中求胜
    领导力管理培训课
    博众投资:虚拟数字人概念,开辟元宇宙炒作新战场!
    FW: Flow区块链门票NFT开发实战【含源码】
    放弃学术研究,做投资大获成功
  • 原文地址:https://www.cnblogs.com/webmen/p/5739280.html
Copyright © 2011-2022 走看看