2301_79345507 2023-08-07 04:22 采纳率: 0%
浏览 15

关于#穷举#的问题,如何解决?(语言-开发语言)

能否用vba穷举开关 是否,看能否使原数在左右列里的加减乘除得到与最终输出左和最终输出右结果相同

img

  • 写回答

3条回答 默认 最新

  • 梦幻精灵_cq 2023-08-07 04:49
    关注
    • 您的数据

      img


      转换成csv文本就是
    开关,左,右
    否,NAN,+10
    否,NAN,-60
    否,-60,+80
    是,-20,NAN
    否,*2,-20
    否*2,+60
    否,-10,*2
    是,*2,NAN
    

    遍历处理开关为“是的行”,就可以得出左、右结果


    Python 代码

    #!/sur/bin/nve python
    # coding: utf-8
    
    num = 240
    s = '''开关,左,右
    否,NAN,+10
    否,NAN,-60
    否,-60,+80
    是,-20,NAN
    否,*2,-20
    否*2,+60
    否,-10,*2
    是,*2,NAN'''
    s_yes = [i.split(',')[1:] for i in s.split('\n') if i[0] == '是']
    print('\n开关“是”的数据:\n', s_yes) 
    left = right = num
    
    for i in s_yes:
        l, r = i
        left = left if l == 'NAN' else eval(f"{left}{l}")
        right = right if r == 'NAN' else right+eval(f"{right}{r}")
    
    print(f"\n原数:{num};左 -> {left},右 -> {right}") 
    
    
    • 代码运行效果截屏图片

      img


    展开全部

    评论 编辑记录
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-08 10:08
    关注

    【以下回答由 GPT 生成】

    为了解决这个问题,我们需要从使用VBA编写一个函数开始,这个函数将会接收原始数值作为参数,并通过左列和右列的加减乘除操作得到最终输出左和最终输出右结果相同的解法。

    下面是一个基本的VBA函数的框架,用于处理这个问题:

    Function FindExhaustiveSolutions(value As Double) As String
        ' 实现代码
    
        ' 返回结果
        FindExhaustiveSolutions = "结果"
    End Function
    

    然后,我们可以在这个函数中使用循环来进行穷举计算。下面是一个简单的示例,展示了如何在VBA中实现穷举解法:

    Function FindExhaustiveSolutions(value As Double) As String
        Dim leftResult As Double
        Dim rightResult As Double
        Dim i As Double, j As Double
    
        For i = 1 To 100    ' 循环从1到100
            For j = 1 To 100    ' 循环从1到100
    
                ' 计算左右列的加减乘除操作
                leftResult = i + j
                rightResult = i * j
    
                ' 检查结果是否相同
                If leftResult = rightResult Then
                    ' 如果结果相同,返回解法
                    FindExhaustiveSolutions = "原始值为 " & CStr(value) & ",解法为 " & CStr(i) & "和" & CStr(j)
                    Exit Function    ' 返回找到的第一个解法
                End If
    
            Next j
        Next i
    
        ' 如果没有找到解法,返回提示信息
        FindExhaustiveSolutions = "未找到解法"
    End Function
    

    这个示例中的穷举解法是通过两个嵌套的循环来实现的。每次循环,我们计算左列和右列的加减乘除操作,并比较它们的结果是否相同。如果找到了解法,函数将返回解法信息。如果循环结束后仍然没有找到解法,函数将返回一个提示信息。

    你可以将这个函数放在VBA宏中,然后在Excel中调用宏来解决问题。例如,你可以在一个单元格中输入函数调用表达式,比如=FindExhaustiveSolutions(10),然后按下Enter键执行函数并显示结果。

    希望这些提示可以帮助你使用VBA语言编写代码解决穷举问题。如果有任何进一步的问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

    展开全部

    评论
  • 薛定谔_51 2023-09-04 12:46
    关注

    前几天写过一个函数正好可以解决这个问题
    vba参考,https://blog.csdn.net/hhhhh_51/article/details/132676668

    评论
编辑
预览

报告相同问题?

问题事件

  • 创建了问题 8月7日

悬赏问题

  • ¥15 MC9S12XS128单片机实验
  • ¥15 失败的github程序安装
  • ¥15 WSL上下载的joern在windows怎么用?
  • ¥15 jetson nano4GB
  • ¥15 电脑回复出厂设置,重装过程报错提示,求解决方案Windows 无法分析或处理无人参与应答文件 [C:\WINDOWS\Panther\unattend.xml,如何解决?
  • ¥15 进入lighttools中的UDOP编辑器的方法
  • ¥15 求Gen6d训练数据集
  • ¥20 liunx中winscp中可以登入ftp,但是不能登入sftp,如何解决
  • ¥15 lighttools的光学属性自定义的用法流程
  • ¥15 uni-app动态修改推荐页内容时报错
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部