Length of S(n)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1406    Accepted Submission(s): 838

Problem Description
A number sequence is defined as following:
S(1)=1,
S(2)=11,
S(3)=21,
S(4)=1211,
S(5)=111221,
S(6)=312211,
……
Now, we need you to calculate the length of S(n).

 
Input
The input consists of multiple test cases. Each test case contains one integers n.
(1<=n<=30)
n=0 signal the end of input.
 
Output
Length of S(n).
 
Sample Input
2
5
0
 
Sample Output
2
6
 
本题最重要的是找到规律,观察数据排列可以知道
S(1) = 1
S(2) = 11
S(3) = 21
S(4) = 1211
S(5) = 111221
S(6) = 312211
...
即 S(n) 与 S(n-1) 有关系 :S(1)有一个1 所以S(2) = 11, S(2)有2个1, 所以S(3) = 21 以此类推。
可以通过前一个推出后一个字符串,然后将所有情况枚举出来

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 2500; //每个字符串的长度未知,因此数组长度可以开大一点

char c[31][N];

void lengthS()
{

  int len, count, k;
  memset(c, 0, sizeof(c));//很容易忘记

  c[1][0] = '1';
  c[2][0] = '1';
  c[2][1] = '1';

  for(int i = 3; i <= 30; i++)//将所有的字符串枚举出来
  {
    len = strlen(c[i-1]);
    k = 0, count = 1;

    for(int j = 0; j < len; j++)
    {
      if(c[i-1][j] == c[i-1][j+1])
      {
        count++;
      }
      else
      {
        while(count)
        {
          c[i][k++] = count%10 + '0';// 记录个数
          count /= 10;
        }
        c[i][k++] = c[i-1][j];
        count = 1;
      }
    }
  }
}
int main()
{
  int n, len;
  lengthS();
  while(cin >> n && n)// n = 0时结束程序
  {
    len = strlen(c[n]);
    cout << len << endl;
  }
  return 0;
}

hdu4148 Length of S(n)的更多相关文章

  1. 《Pro AngularJS》学习小结-02

    上一篇的项目只有一个单独的模板页面,加入了相应的controller,filter,使得页面上的数据能够动态的变化.现在我们开始建立并整合多个模板,加入购物车模块和结账checkout模块. 一.在页 ...

  2. C#中Length和Count的区别(个人观点)

    这篇文章将会很短...短到比你的JJ还短,当然开玩笑了.网上有说过Length和count的区别,都是很含糊的,我没有发现有 文章说得比较透彻的,所以,虽然这篇文章很短,我还是希望能留在首页,听听大家 ...

  3. js报错: Uncaught RangeError: Invalid string length

    在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...

  4. string length() 方法注意点

    突然意识到string length() 是跟文件的字符编码相关的 测试了下, 果然如此: 对于常见字, 结果是一样的, System.out.println("T中国123".l ...

  5. String构造器中originalValue.length>size 发生的情况

    最近在看Jdk6中String的源码的时候发现String的有个这样的构造方法,源代码内容如下: public String(String original) { int size = origina ...

  6. [LeetCode] Encode String with Shortest Length 最短长度编码字符串

    Given a non-empty string, encode the string such that its encoded length is the shortest. The encodi ...

  7. [LeetCode] Length of Last Word 求末尾单词的长度

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  8. 有关Javascript的length()函数

    刚开始学JavaScript的时候,length()对我来说是一个获取字符串长度的函数.然而前几天开始读犀牛书,得知该函数是计算字符串中16位值的个数.也就是说,对于UTF-16来说,如果包含占据了两 ...

  9. easyui Datagrid查询报错Uncaught TypeError:Cannot read property 'length' of undefined

    1.问题描述 easyui中datagrid执行loadData方法出现如下异常:Cannot read property 'length' of undefined 2.一开始怀疑是js或者页面的问 ...

随机推荐

  1. 图像变换之Census变换

    图像的Census变换 Census变换属于非参数图像变换的一种,它能够较好地检测出图像中的局部结构特征,如边缘.角点特征等.传统Census变换的基本思想是:在图像区域定义一个矩形窗口,用这个矩形窗 ...

  2. Java数据持久层框架 MyBatis之背景知识一

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  3. main函数的两个参数

    #include "stdio.h" int main(int argc ,char **argv) { printf("argc = %d \n",argc) ...

  4. python3 第二十一章 - 函数式编程之return函数和闭包

    我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但 ...

  5. Linux指令--chmod

    chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...

  6. Nginx的安装(笔记)

    0, 先决条件Nginx 依赖 zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre安装命令:yum -y install make z ...

  7. 1.Tarball软件make与makefile详解(还需要补充)

    *通常自己安装的软件放在 /usr/local/软件名   中,而将源文件放在/usr/local/src *为安装到单独目录的软件之 man page 加入 man path 搜寻: 如果你安装的软 ...

  8. 二目运算符 “->”

    -> 在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符“.”.用法:p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员.表达式p->a引用了指针p指向 ...

  9. python之在线平台与量化投资

    0. 第一个量化策略 # 初始化函数,设定基准等等 def initialize(context): set_benchmark('000300.XSHG') g.security = get_ind ...

  10. Jmeter之性能测试类型

    pipe-clean test 在测试环境预先跑 确定脚本准确性 单用户跑 获取baseline   容量测试 经典的性能测试类型 获取系统稳定运行时最大的吞吐量/并发数/响应时间时 尽量模拟真实情况 ...