求小算法:一组数中找出连续14个数相邻大小交替的数

lanhai96 2016-05-08 11:04:37
给定一组数:
如:
948
1001
985
1012
1015
1011
1014
1009
1011
1004
1012
1007
1019
1005
1012
1003
1019
1016
1024
找出这组数中 连续14个数,它们相邻、并且大小交替出现。
如下图


跪求大神指点。.........
...全文
233 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2016-05-09
  • 打赏
  • 举报
回复
Option Explicit

Sub Main()
    Const FIND_COUNT As Long = 14
    Dim a()         As Variant
    Dim lLastTrend  As Long     '上个变化趋势'
    Dim lThisTrend  As Long     '当前变化趋势'
    Dim bIsAddMatch As Boolean  '当前是否符合交替变化(至少是第3个了)'
    Dim lMatchCount As Long     '符合的长度'
    Dim i           As Long
    Dim j           As Long
    
    a = Array(948, 1001, 985, 1012, 1015, 1011, 1014, 1009, 1011, 1004, 1012, 1007, 1019, 1005, 1012, 1003, 1019, 1016, 1024)

    For i = LBound(a) + 1 To UBound(a)
        lThisTrend = Sgn(a(i) - a(i - 1))
        
        If lThisTrend = 0 Then
            bIsAddMatch = False
        Else
            bIsAddMatch = ((lThisTrend + lLastTrend) = 0)
        End If
    
        If bIsAddMatch Then
            lMatchCount = lMatchCount + 1
            If lMatchCount = FIND_COUNT Then
                Exit For
            End If
        ElseIf lThisTrend = 0 Then
            lMatchCount = 0
        Else
            lMatchCount = 2
        End If
        lLastTrend = lThisTrend
    Next
    
    Debug.Print "MatchCount = " & lMatchCount
    For j = i - lMatchCount + 1 To i
        Debug.Print CStr(a(j));
        If j < i Then Debug.Print ", ";
    Next
    Debug.Print
End Sub
MatchCount = 14
1012, 1015, 1011, 1014, 1009, 1011, 1004, 1012, 1007, 1019, 1005, 1012, 1003, 1019
一如既往哈 2016-05-09
  • 打赏
  • 举报
回复
这个得自己写。参考思路: 定义一个integer变量,如果后面的数比前面大+1,反之则-1,随时判断变量值范围【-1,1】和数量就可以了
lanhai96 2016-05-09
  • 打赏
  • 举报
回复
试了,两个都不错,这个要画图判断,我先试试那个最好,完了给分,谢谢。
of123 2016-05-09
  • 打赏
  • 举报
回复
利用 ListBox 和随机数的一个方法。在窗体上添加一个 Sorted = True 的 ListBox,Visible 可以 = False。
Private Sub Command1_Click()
Dim a() As Variant, i As Integer, m As Integer, n As Integer

a = Array(948, 1001, 985, 1012, 1015, 1011, 1014, 1009, 1011, 1004, 1012, 1007, 1019, 1005, 1012, 1003, 1019, 1016, 1024)

'put data into a sorted list
List1.Clear
For i = 0 To UBound(a)
    List1.AddItem Right("0000" & a(i), 4)
Next i

'cut it to 14 numbers
Do Until List1.ListCount = 14
    List1.RemoveItem 0
    If List1.ListCount = 14 Then Exit Do
    
    List1.RemoveItem List1.ListCount - 1
Loop

'get the data
Randomize
For i = 1 To 6
    'get a smaller number and a bigger number
    m = Rnd * (List1.ListCount / 2)
    n = Rnd * (List1.ListCount / 2) + List1.ListCount / 2
    If n > List1.ListCount - 1 Then n = List1.ListCount - 1
    
    Debug.Print Val(List1.List(m))
    Debug.Print Val(List1.List(n))
    
    List1.RemoveItem n
    List1.RemoveItem m
Next i

Debug.Print Val(List1.List(0))
Debug.Print Val(List1.List(1))
    
List1.RemoveItem 1
List1.RemoveItem 0

End Sub
内容概要:本文详细探讨了机组组合优化模型的构建,旨在通过合理安排各类发电机组的启停计划和优化出力分配,实现电力系统在经济性和稳定性上的最佳平衡。文章首先介绍了电力系统的四大主要组件——传统火电机组、风电机组、光伏机组和储能系统的参及运行特性。接着,围绕最小化系统总运行成本这一目标,设计了优化目标函,并明确了包括功率平衡约束、机组出力上下限约束、风光发电功率约束、弃风弃光约束、爬坡速率约束、储能系统荷电状态约束、充放电功率约束和充放电互斥约束在内的多项约束条件。最后,文章列出了求解机组组合优化模型所需的关键变量,如传统机组的开停状态、机组出力、启停成本、风电光伏实际出力、弃风弃光比例及储能系统的充放电功率和荷电状态,以实现系统的经济调度和可再生能源的最大化利用。 适合人群:从事电力系统研究、规划和调度工作的工程师和技术人员,以及对电力系统优化感兴趣的科研人员。 使用场景及目标:①帮助电力系统工程师理解不同类型发电机组的特点及其对系统稳定性、经济性和环保性的影响;②为制定合理的电力系统调度策略提供理论依据和技术支持;③促进可再生能源的有效整合,提高电力系统的灵活性和可靠性。 其他说明:本文提供的模型和方法不仅适用于当前的电力系统,也可为未来含高比例可再生能源接入的电力系统提供参考。文中涉及的具体学公式和参设定为实际应用提供了详细的指导,有助于提升电力系统的运行效率和经济效益。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧