VB 算法问题(简单高分)

2025年01月05日 09:52
有5个网友回答
网友(1):

一百呀!!我要加分哦,C语言编,VB编
先C吧!
#include "stdio.h"
main()
{
int i,j,k,l,m,n;
long int sum=0;SUM计总数为多少组合!
for(i=0;i<9;i++)
for(j=0;j<9;j++)
for(k=0;k<9;k++)
for(l=0;l<9;l++)
for(m=0;m<9;m++)
for(n=0;n<9;n++)
sum++;
printf("%d,%d,%d,%d,%d,%d\t",i,j,k,l,m,n); 输出6个组合!
printf("%l",sum);
}

VB编法一样!

Private Sub Command1_Click()
Dim i, j, m, n, k, l, sum, s
sum = 0
For i = 0 To 5
For j = i + 1 To 6
For m = j + 1 To 7
For n = m + 1 To 8
For k = n + 1 To 9
For l = k + 1 To 9
s = s & i & j & m & n & k & l & vbCrLf
sum = sum + 1
DoEvents
Next
Next
Next
Next
回帖,是对朋友的帮助 请大家帮忙
评分,是对帮助的肯定 按感觉给分

网友(2):

给你一个通用函数,计算排列的。
Private Function Per_Com(n As Integer, m As Integer) As Double '排列计算:n为总数,m为取出来的数,函数返回结果。你这个例子,n为10,m为6.
On Error GoTo Lexit
Per_Com = 1
If m = 0 Then Exit Function
For i = 1 To m
Per_Com = Per_Com * (n - i + 1)
Next
Exit Function
Lexit:
MsgBox "数据过大,超过1.8E308" & Error, vbCritical
End Function

答案是151200。

网友(3):

提供个算法:
循环套循环
for a = 0 To 9
for b = 0 To 9
如果 b不等于a
则 for c = 0 To 9
如果 c不等于a 且c不等于b
则 {......}
next c
next b
next a

{} 内套用循环到f,最后一层循环如下:
for f = 0 To 9
如果 f不等于a 且f不等于b 且f不等于c 且f不等于d 且f不等于e
则 n+1
next f

n为所求个数,n初始赋值为0

本人VB不用好多年了,有些语法可能不对,但是算法绝对可行

网友(4):

我不知道你说的是排列还是组合所以你自己看吧!

1.排列
Private Sub Command1_Click()
x = 10 * 9 * 8 * 7
Y = 6 * 5
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub

2.组合
Private Sub Command1_Click()
x = 10 * 10 * 10 * 10
Y = 10 * 10
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub

注意VB里不能直接输出10*9*8*7*6*5的!要像上面的代码才可以运算的!

网友(5):

如果每数只能用一次的话(第一位不为0):
Private Sub Form_Load()
Dim i As Integer
Dim n As Long
n = 9
For i = 1 To 5
n = n * (10 - i)
Next
Text1.Text = n
End Sub
运行结果是136080
其实就是9*9*8*7*6*5