给二维数组排版
0 495 330 210 126 70 35 15 5 1
495 495 330 210 126 70 35 15 5 1
165 165 120 84 56 35 20 10 4 1
45 45 36 28 21 15 10 6 3 1
9 9 8 7 6 5 4 3 2 1
1 1 1 1 1 1 1 1 1 1
这样看很难受。
对于每一列, 算出其最大位数, 设为 x, 假设这一列的一个数的位数为 y, 那么将它后面的空格数设为 k=x+1-y, 就可以保证矩阵的每一列的数字都满足左对齐。
很naive且不实用, 但是我还是要发出来。
实现
int weishu(int x) {
if(!x) return 1;
int res=0;
while(x) x/=10, ++res;
return res;
}
int mx[N];
void print_matrix(int a[101][101] ,int n, int m) {
for(int j=0;j<=m;++j)
for(int i=0;i<=n;++i)
mx[j] = max(mx[j], weishu(a[i][j]));
for(int i=0;i<=n;++i) {
for(int j=0;j<=m;++j) {
cout<<a[i][j];
for(int k=mx[j]+2-weishu(a[i][j]);k>=1;--k) putchar(' ');
}
putchar('\n');
}
}
效果:
0 495 330 210 126 70 35 15 5 1
495 495 330 210 126 70 35 15 5 1
165 165 120 84 56 35 20 10 4 1
45 45 36 28 21 15 10 6 3 1
9 9 8 7 6 5 4 3 2 1
1 1 1 1 1 1 1 1 1 1