美文网首页程序员
SRM-144 BinaryCode

SRM-144 BinaryCode

作者: waaagh | 来源:发表于2020-05-17 17:09 被阅读0次

题目大意:https://community.topcoder.com/stat?c=problem_statement&pm=1704
算法:模拟
反思: 多想rainy case,比如边界值。
代码

#include<bits/stdc++.h>
using namespace std;
class BinaryCode {
public:
    string process(string message, int first) {
        int len = message.length();
        int P[60], Q[60];
        for(int i=0; i<len; i++) {
            Q[i] = message[i]-'0';
        }
        P[0] = first;
        if(len == 1 && P[0] != Q[0]) {
            return "NONE";
        }
        for(int i=1; i<len; i++) {
            if(i==1) P[i] = Q[i-1]-P[i-1];
            else P[i] = Q[i-1]-P[i-1]-P[i-2];
            //cout << "$ " << P[i] << endl;
            if(P[i]!=0 && P[i]!=1) {
                return "NONE";
            }
        }
        if(len>1 && Q[len-1]!=P[len-1]+P[len-2]) {
            return "NONE";
        }

        string s;
        for(int i=0; i<len; i++) {
            s.push_back(P[i]+'0');            
        }
        return s; 
    }
    vector<string> decode(string message) {
        vector<string> v;
        v.push_back(process(message, 0));
        v.push_back(process(message, 1));
        return v;
    }
};

相关文章

网友评论

    本文标题:SRM-144 BinaryCode

    本文链接:https://www.haomeiwen.com/subject/sousohtx.html