我的解法非常暴力
开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 << " "; } }