主题:关于排列组合的问题
mxalbert1996
[专家分:780] 发布于 2006-08-09 16:44:00
那位大虾能给我一种快速做排列组合的程序,谢啦!? (当然是要一种一种的输出啦,而且最好能快一点)
回复列表 (共3个回复)
沙发
moz [专家分:37620] 发布于 2006-08-09 18:09:00
[url=http://www.programfan.com/club/showbbs.asp?id=128367]Moz 的排列组合[/url]
板凳
hxy_anhui [专家分:320] 发布于 2009-01-30 14:26:00
【1】4位数排列:任给出4个非0的不同数字,求出由这4个数字组成的所有的4位数。
例如:输入:3,2,1,6
输出:1 2 3 6 1 2 6 3 1 3 2 6 1 3 6 2 1 6 2 3 1 6 3 2
2 1 3 6 2 1 6 3 2 3 1 6 2 3 6 1 2 6 1 3 2 6 3 1
3 1 2 6 3 1 6 2 3 2 1 6 3 2 6 1 3 6 1 2 3 6 2 1
6 1 2 3 6 1 3 2 6 2 1 3 6 2 3 1 6 3 1 2 6 3 2 1
程序要求:从键盘输入4个不同的非0数字,列出由这4个数字组成的所有4位数,从小到大依次输出,每行输出6个数。
CLS
FOR I = 1 TO 4
INPUT A(I)
NEXT I
FOR I = 1 TO 4
FOR J = I + 1 TO 4
IF A(J) < A(I) THEN SWAP A(J), A(I)
NEXT J
NEXT I
FOR I = 1 TO 4
FOR J = 1 TO 4
FOR K = 1 TO 4
FOR L = 1 TO 4
IF I * J * K * L = 24 THEN
IF I + J + K + L = 10 THEN
PRINT A(I) * 1000 + A(J) * 100 + A(K) * 10 + A(L);
END IF
END IF
NEXT L, K, J, I
END
【2】从N个不同元素中取出M(M<=N)个元素的所有组合的个数,可以用一个公式求出: N!/(M!*(N-M)!)
试编程输出个数。例如,输入:10,4 输出:210
CLS
INPUT N, M
S = 1
FOR I = 1 TO N
S = S * I
NEXT I
X = 1
FOR I = 1 TO N - M
X = X * I
NEXT I
W = 1
FOR I = 1 TO M
W = W * I
NEXT I
PRINT S / (X * W)
END
【3】从N个不同元素中取出M(M<=N)个元素的所有排列的个数,也可以用一个公式求出: N!/(N-M)!
试编程输出个数。例如,输入:10,4 输出:5040
CLS
INPUT N, M
S = 1
FOR I = 1 TO N
S = S * I
NEXT I
X = 1
FOR I = 1 TO N - M
X = X * I
NEXT I
PRINT S / X
END
【4】有N(N>=3)位同学去照相,每次照三个同学,共可照出多少张不全相同的照片?
每张照片中都是谁?
CLS
INPUT N
S = 1
FOR I = 1 TO N
S = S * I
NEXT I
PRINT S
END
3 楼
天天和和 [专家分:1420] 发布于 2009-03-05 23:43:00
哇!hxy 你好厉害!
我来回复