zoukankan      html  css  js  c++  java
  • 计蒜客 计数和数数 (模拟)

    题目链接

    题目描述
    “伯爵说”序列如下:1,11,21,1211,111221, ldots1,11,21,1211,111221,…。其1读作one 1或者11。11读作two 1s或者21。21读作one 2, one 1或者1211。

    输入格式
    多组输入,读到文件结束。每组输入给定一个整数 n(1 leq n leq 30)n(1≤n≤30)。

    输出格式
    输出第 nn 个序列。注意,整数序列以字符串的形式表示。

    样例输入
    6

    样例输出
    312211

    分析:
    读了两遍题,硬是没读懂题目是什么意思,这是语文有问题,~~~

    好了,先来说一下题目是什么额意思吧

    1.初始状态下我们有一个1
    2.基于1统计里面相邻的相同数字的个数,只有一个1,所以下一个串就应该是11,

    3.现在基于11来统计,里面有两个连续的1,所以下一个串就是21,

    4.基于21来统计,脸面有一个连续的2,一个连续的1,所以下一个串就是1211,

    5.基于1211来统计,依次有一个连续的1,一个连续的2,两个连续的1,所以下一个串就是111221,

    6.基于111221来统计,依次有三个连续的1,两个连续的2,一个连续的1,所以下一个串就是312211,

    ······

    这样挨个的统计下来,知道第n个就是所要求得。

    代码:

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            string ans="1";//初始的字符串
            for(int i=1; i<n; i++)//因为要求的是第n个,而第一个已经知道了,所以再循环n-1次即可
            {
                string temp="";//临时的变量,用来存当前计算出来的这个字符串
                int cnt=1;
                char ch_now=ans[0];
                for(int j=1; j<ans.length(); j++)//应该遍历的是上一个串
                {
                    if(ans[j]==ch_now)//和前一个相等,只将计数个数加
                        cnt++;
                    else
                    {
                        temp+=cnt+'0';//现将前一个字母的个数存下来
                        temp+=ch_now;//再讲这个字母存下来
                        cnt=1;//计数归1
                        ch_now=ans[j];//接着要找的字符为当前的字符
                    }
                }
                //将最后一个字母的情况也要记录下来
                temp+=cnt+'0';//猜测连续数组的个数应该不会超过十个,
                temp+=ch_now;
                ans=temp;
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    Silverlight DataGrid 获取 Row 左键双击事件
    数据结果集拼接到一行
    程序“[6040] iisexpress.exe”已退出,返回值为 0 (0x0)。
    新手用WPF山寨QQ管家7.6(二)
    风向十六方位图和温度湿度图
    新手向使用XAML画出Win8风格图标的照相机,小姐你相机~~
    新手用WPF山寨QQ管家7.6(一)
    实验一
    实验5
    实验4
  • 原文地址:https://www.cnblogs.com/cmmdc/p/8665811.html
Copyright © 2011-2022 走看看