zoukankan      html  css  js  c++  java
  • count and say

     1 ```
     2 class Solution{
     3     string result;
     4     public:
     5     //根据数组前一个数,count and say 构造出后一个数
     6         void generate(string s,string &result)
     7         {
     8             result=string();
     9             string::iterator i=s.begin();
    10             while(i != s.end())
    11             {
    12                 char cur=*i;
    13                 int count=1;
    14                 i++;
    15                 while(i != s.end() && *i == cur)
    16                 {
    17                     count++;
    18                     i++;
    19                 }
    20                 result.push_back(count+'0');
    21                 result.push_back(cur);
    22 
    23             }
    24 
    25         }
    26         //n相当于数组的下标,n是几就调用上面的函数几次,这样就反复调用,每次都以前一个为参数,得到答案
    27         string countAndSay(int n){
    28 
    29             for(int i=1;i<n;i++)
    30             {
    31                 
    32                 generate(result,result);
    33             }
    34             return result;
    35         }
    36 };
    37 
    38 ```

    首先,我们发现一点,那个数组中前一个数字按照count and say的方式译码的结果就是后一个数,那么我先写了一个函数,功能是给定前一个数,计算出后一个数。

    那么要实现的是求出第n个数,直接循环n-1次,每次的输入是上一次的输出即可。

  • 相关阅读:
    java大数取余
    hdu--5351--MZL's Border
    NYOJ--水池数目
    NYOJ--32--SEARCH--组合数
    NYOJ--20--搜索(dfs)--吝啬的国度
    hdu--4148--Length of S(n)
    hdu--2098--分拆素数和
    hdu--1873--看病要排队
    hdu--1870--愚人节的礼物
    hdu--1237--简单计算器
  • 原文地址:https://www.cnblogs.com/gaoduan/p/4055218.html
Copyright © 2011-2022 走看看