| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 435 人关注过本帖
标题:请高手 帮助 用c 或 VB 编写 一 凑数问题 具体问题如下…………
只看楼主 加入收藏
Qcelery
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-7-7
结帖率:0
收藏
 问题点数:0 回复次数:2 
请高手 帮助 用c 或 VB 编写 一 凑数问题 具体问题如下…………
请高手 帮助 用c 或 VB 编写 一 凑数问题 具体问题如下…………
编写一程序,从键盘输入数字R,计算机自动检查在下列算式的()中能否天上“+”或“—”凑成相应的等式。如能凑成,则打印出这些算式;如凑不成,则给出信息“NO answer!”1()2()3()4()5()6()7()8()9=R
搜索更多相关主题的帖子: 凑数 编写 
2010-07-08 08:30
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
1\允许括号不?
2\仅限 加减号不 ?

如果是没括号,仅限 加减号, 可以试着写一下.

程序代码:
Option Explicit

Private Type 临时结果结构
     算式 As String
     结果 As Long
End Type

Dim 缓存(0 To 255) As 临时结果结构
Dim 缓存计数 As Long

Private Sub Command1_Click()
    Dim i As Long
    i = Val(Text1.Text)                 '输入值
   
    Dim o As Long
    o = 计算(i)                         '计算
   
    If o = -1 Then                      '如果计算失败
        Text2.Text = "NO answer!"      '提示
    Else                                '否则显示表达式及结果
        Text2.Text = 缓存(o).算式 & "=" & 缓存(o).结果
    End If
   
End Sub

Private Function 计算(cs As Long) As Long

Dim i As Long
    For i = 0 To 缓存计数                   '查找缓存,减少计算
        If 缓存(i).结果 = cs Then           '在缓存中找到,
            计算 = i                        '那么直接返回结果
            Exit Function
        End If
    Next i
   
Dim j As Long
Dim k As String, m As String
Dim o As Long

For i = 缓存计数 To 255                 '计算,一共有 8 个符号位,每位用 1位为代替, 1 为加, 0 为减
    k = HextoBin(CByte(i))                   '转化为二进制,用来取位
        m = "1"                         '第一个数
        o = 1
    For j = 2 To 9                      '第二个数 到第 9 个数
        If Mid(k, j - 1, 1) = 1 Then    '根据符号位进行计算,组合表达式
            m = m & "+" & j
            o = o + j
        Else
            m = m & "-" & j
            o = o - j
        End If
    Next j
    缓存(i).算式 = m                    '如果计算结果与参数相符,那么停止计算,输出结果
    缓存(i).结果 = o
    缓存计数 = i                        '保存缓存的最大值,可以减少计算次数
    If o = cs Then
        计算 = i                        '返回结果
        Exit Function
    End If
Next i
缓存计数 = i                            '没找到结果,保存缓存
计算 = -1                               '返回没结果
 
End Function


Private Function HextoBin(cs As Byte) As String
    'BYTE数值转 二进制字符串
    Dim i As Long, j As String
    Dim m As String
    j = Hex(cs)
    If Len(j) = 1 Then j = "0" & j
    For i = 1 To 2
        Select Case Mid(j, i, 1)
        Case "0"
            m = m & "0000"
        Case "1"
            m = m & "0001"
        Case "2"
            m = m & "0010"
        Case "3"
            m = m & "0011"
        Case "4"
            m = m & "0100"
        Case "5"
            m = m & "0101"
        Case "6"
            m = m & "0110"
        Case "7"
            m = m & "0111"
        Case "8"
            m = m & "1000"
        Case "9"
            m = m & "1001"
        Case "A", "a"
            m = m & "1010"
        Case "B", "b"
            m = m & "1011"
        Case "C", "c"
            m = m & "1100"
        Case "D", "d"
            m = m & "1101"
        Case "E", "e"
            m = m & "1110"
        Case "F"
            m = m & "1111"
    End Select
Next i

HextoBin = m
       
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2010-07-08 09:04
frank_tao78
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:143
注 册:2010-1-11
收藏
得分:0 
云里雾里的,风大哥,太牛了,崇拜ing
2010-07-15 21:23
快速回复:请高手 帮助 用c 或 VB 编写 一 凑数问题 具体问题如下…………
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023602 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved