题解 | #摩尔斯电码解码#

摩尔斯电码解码

http://www.nowcoder.com/practice/592a069811044d3fadb94c6c55d7b4f2

  1. 分为 1 位, 2位, 3位 。然后从底向高位逐渐添加。
  2. dp[0] = 1是由动态规划方程给出来的。
  3. 三种情况,先走1,再走2,最后走3.
    dp[i] = dp[i-1]; dp[i] += dp[i-2];dp[i] += dp[i-3];
  4. 记得对long long 最大值取余。2147483647
#include<bits/stdc++.h>

using namespace std;
const long long mod = 2147483647;
int main(){
    string s;

    while(cin>>s){

        vector<int> dp(s.size()+1,0);

        dp[0] = 1;
        dp[1] =1;

        for(int i=2; i<= s.size();i++){
            dp[i] = dp[i-1];

            if(s.substr(i-2,2)=="10"||s.substr(i-2,2)=="11"){
                 dp[i] += dp[i-2];
            }

            if(i>=3 && (s.substr(i-3,3)=="100"||s.substr(i-3,3)=="101"||
              s.substr(i-3,3)=="110"||s.substr(i-3,3)=="111")){
                 dp[i] += dp[i-3];
            }

            dp[i]%= mod;
        }

        cout<<dp[s.size()]<<endl;

    }


    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

会非的杨:吓死了,看到我的评论以为自己被网暴了,那哥们说白了就是吃了黑流量还要倒打一耙喷他的,自己都说了想吃黑流量,然后又说网友不友好,md这不左右脑互搏吗,拿个蓝桥杯省二说要冲大厂,起号和父母不能同时存在
点赞 评论 收藏
分享
09-23 14:45
贵州大学 财务
勇敢求职牛牛:怎么9.2佬人手一个中信证券实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务