有1,2,5分硬币若干枚,从中取20枚硬币使总值为60分,求取法的数量及每中取法中1,2,5分硬币个数

用VFP!帮帮忙吧!
2025-06-22 22:33:59
推荐回答(1个)
回答1:

我用的VB遍的。.希望你满意,有两种方法

解:本题属于“穷举”问题,它的基本思想是:一一列举各种可能的情况,并判断哪一种可能是符合要求的解,这种算法称为穷举法(又称“枚举法”)。

Private Sub Form_Click()

Dim i%, j%, k%, m%, n% '用i,j,k分别代表1分、2分、5分枚数

n = 0 'n代表取法总数

For i = 1 To 20

For j = 1 To 20

k = 20 - i - j

m = i + 2 * j + 5 * k '用m代表取出20枚硬币的总值

If m = 60 Then '当20枚硬币的总值等60分,则输出

Print "1分:"; i, "2分:"; j, "5分:", k

n = n + 1

End If

Next j

Next i

Print "------------------------------------"

Print "总共有:"; n; " 取法"

End Sub

方法二、

Dim i%, j%, k%, m%, n% '用i,j,k分别代表1分、2分、5分枚数

n = 0 'n代表取法总数

For i = 1 To 20

For j = 1 To 20

For k = 1 To 20

m = i + 2 * j + 5 * k '用m代表取出20枚硬币的总值

If m = 60 And i + j + k = 20 Then '当硬币数为20枚,且总值等60分,则输出

Print "1分:"; i, "2分:"; j, "5分:", k

n = n + 1

End If

Next k

Next j

Next i

Print "------------------------------------"

Print "总共有:"; n; " 取法"

End Sub

10.打印如下图所示的杨辉三角形(杨辉三角形为一个下三角矩阵,每一行第一个和主对角线上元素都为1,其余每一个数正好等于它上面一行的同一列与前一列数之和)。

Private Sub Form_click()

Dim i%, j%

Const n = 7

Dim a(n, n) As Integer ' 将定义为n×n的数组

For i = 1 To n ' 给第一列和主对角线上的元素赋值1

a(i, i) = 1

a(i, 1) = 1

Next i

For i = 3 To n

For j = 2 To n - 1

a(i, j) = a(i - 1, j - 1) + a(i - 1, j) ' 计算除第一列和主对角线上之外元素的值

Next j

Next i

For i = 1 To n

Rem Print Tab(30 - i * 3); ' 定位每一行第一个元素输出位置

For j = 1 To i

Print a(i, j);

If a(i, j) < 10 Then ' 打印格式的设置

Print Space(3);

Else

Print Space(2);

End If

Next j

Print

Next i

End Sub