算法
我们让a最大
c = 0时,a、b都加0即可
c = 1时,假如此时a==b,则 a 加 1, b 加0,之后a就比b大了
假如此时a>b,则a 加 0 , b 加 1 ,为的是让a尽可能小
c = 2时,假如a==b,则a、b都加1
假如此时a>b,则a 加 0 , b 加 2 ,为的是让a尽可能小
C++ 代码
#include<iostream>
using namespace std;
void solve()
{
string str,a,b;
int n,cnt1=0;
cin >> n;
cin >> str;
for(int i = 0;i<str.size();i++)
{
char c = str[i];
if(c=='2')
{
if(i==0||a==b)
{
a.push_back('1');
b.push_back('1');
}
else if(a>b)
{
a.push_back('0');
b.push_back('2');
}
}
else if(c=='1')
{
if(a==b)
{
a.push_back('1');
b.push_back('0');
}
else
{
a.push_back('0');
b.push_back('1');
}
}
else
{
a.push_back('0');
b.push_back('0');
}
}
cout << a << endl << b <<endl;
}
int main()
{
int t;
cin >> t;
while(t--)
solve();
return 0;
}