python 数字矩阵的绘制

现在有个棘手的问题,我想绘制一个长度为N的数字矩阵,要求每一行的数字相加均等于变量P,并且包含了所有排列组合,希望解惑。

期望逐行print如下结果:
n=2 p=3 的情况下:

0 3

1 2

2 1

3 0

n=3 p=3 的情况下:

0 0 3

0 1 2

0 2 1

0 3 0

1 2 0

2 1 0

3 0 0

2 0 1

1 0 2

n=4 p=3 的情况下:

0 0 0 3

0 0 1 2

0 0 2 1

0 0 3 0

0 1 2 0

0 2 1 0

0 3 0 0

1 2 0 0

2 1 0 0

3 0 0 0

0 1 0 2

0 2 0 1

1 0 0 2

2 0 0 1

1 0 2 0

2 0 1 0

你这需要递归,否则按照正常的循环思路,你N=4就需要4重for循环