下面的程序可以完美运行大多数输入,例如 123210122。
但是当我输入 12221112222221112221111111112221111 时,它会抛出 std::bad_alloc 异常。
我无法更改问题中指定的类结构或函数签名。所以看看这段代码:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class BinaryCode
{
public:
vector<string> decode(string q)
{
string p;
int i;
vector<string> response;
bool flagnone=false;
p[0]='0';
p[1]=((q[0]-'0')-0-(p[0]-'0'))+'0';
if(p[1]!='0' && p[1]!='1')
response.push_back("NONE");
else
{
for(i=2;i<q.length();++i)
{
p[i]=((q[i-1]-'0')-(p[i-2]-'0')-(p[i-1]-'0'))+'0';
if(p[i]!='0' && p[i]!='1')
{
response.push_back("NONE");
flagnone=true;
}
}
if(!flagnone)
{
response.push_back(p.data());
}
}
flagnone=false;
p[0]='1';
p[1]=((q[0]-'0')-0-(p[0]-'0'))+'0';
if(p[1]!='0' && p[1]!='1')
response.push_back("NONE");
else
{
for(i=2;i<q.length();++i)
{
p[i]=((q[i-1]-'0')-(p[i-2]-'0')-(p[i-1]-'0'))+'0';
if(p[i]!='0' && p[i]!='1')
{
response.push_back("NONE");
flagnone=true;
}
}
if(!flagnone)
{
response.push_back(p.data());
}
}
return response;
}
}b;
int main()
{
string s;
cin>>s;
vector<string>ans = b.decode(s);
cout<<ans[0]<<" "<<ans[1];
return 0;
}