我的解法非常暴力
开10个的数组
因为最多只有9个数去构造
因为对于某一位来说,等于几就需要几个1来构造
#include <bits/stdc++.h>
using namespace std;
bool a[10][1000009];
int n,top;
int main()
{
char x;
while( cin >> x )
{
x-='0'; ++n;
for(int j=1;j<=top;j++)
a[j][n]=(j<=x?1:0);
if( x>top )
for(int j=top+1;j<=x;j++) a[++top][n]=1;
}
cout << top << endl;
for(int i=1;i<=top;i++)
{
int ok=0;
for(int j=1;j<=n;j++)
if( ok ) printf("%d",a[i][j]);
else if( a[i][j] ) printf("%d",a[i][j]),ok=1;
cout << " ";
}
}
京公网安备 11010502036488号