急求一个排列的算法!

来源:百度知道 编辑:UC知道 时间:2024/07/05 00:31:28
给定n(n >= 1)个无重复数和一个正整数z,从这n个数中选取m个数(m >= 1,那n个数均可无限重用)组成一个序列x,使之满足:
Sx(该序列的和,即x1 + x2 + ... + xn) <= z,
每次所得到的Sx如果依次记做Sx1,Sx2,...,Sxn,并看做一个数列An的话,要求其满足Sx1 <= Sx2 <= .. <= Sxn,即让An呈递增数列。
求出满足条件的所有x序列。

比如给定1 2 3和正整数3,就有:
1
1 1
2
1 2
2 1
3
1 1 1
共7个序列。

我想到脑残也想不出,高手大侠们快来帮帮我吧!!
C/C++给出代码优先,其他语言也可,或者提供思路也行!

加100分,今晚帮你搞掂如何?

拜托,要什么语言的,Pascal和C++可是不一样的呀!!

提点一下:

双重循环n,j;

外循环1-n次,内循环1-j次(j=n);

(s=s+j)<z;

如果:S+=J >z,输出前面的数列;继续循环,找出后面符合的数列。

上面语句在内循环执行。

想完这些我也差不多脑残了。

双重循环n,j;

外循环1-n次,内循环1-j次(j=n);

(s=s+j)<z;

如果:S+=J >z,输出前面的数列;继续循环,找出后面符合的数列。

上面语句在内循环执行。