VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: 八戒2

擂台区征题,长期有效

[复制链接]
发表于 2006-3-26 00:10:12 | 显示全部楼层
现有如下规格的板材(宽X高X数量)用尺寸为3300X2400的大板去裁这些小板,如何裁用原板最少?
515x341x8
519x515x330
674x515x20
689x515x20
729x515x12
偿试编程求解,求得的只是近优解.此问题应用很广:玻璃切割,铝板切割,石材切割,皮料切割等等.可否用一题大家来试试.
回复 支持 反对

使用道具 举报

发表于 2006-3-26 15:41:52 | 显示全部楼层
思路是排列组合,规则是找几个总宽接近总高的方法!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 10:08:16 | 显示全部楼层
第五期擂台已取用  lgf727 的题目。谢谢lgf727,将给你一定的论坛加分,请继续关注本论坛。
回复 支持 反对

使用道具 举报

发表于 2006-4-4 13:33:38 | 显示全部楼层
我是大菜鸟????????????????????????????????
回复 支持 反对

使用道具 举报

发表于 2006-4-8 10:49:54 | 显示全部楼层
我觉得算法固然重要,但是有些时候实际问题也很有意思,例如多功能的打印系统,能够像Excel一样对列操作,对行操作,对单元格操作,打印的灵活性要很高,例如对选定区域打印,全部打印,打印预览.反正功能越多越好.因为报表打印在程序设计中总是要的,要是能有这样一个打印系统做支撑,一定能减少重新开发过程和节省开发时间,缩短开发周期.对软件开发人员来讲一定是一件好事!
回复 支持 反对

使用道具 举报

发表于 2006-4-8 15:27:27 | 显示全部楼层
本人曾在其他区提出此问题,似乎有一定难度:
有32支球队进行单循环比赛,每天进行一场,共赛31天赛完。请列出每天的对阵表(所有球队每天都要出场,每一球队必须与其他31支球队对阵,并且只能对阵一次)
回复 支持 反对

使用道具 举报

发表于 2006-4-10 01:44:18 | 显示全部楼层

一个网络建模工具

要求: 1 简单的画图功能 可以在图形上添加(修改)名称  可以移动
           2 存储时不只是存储图形的坐标信息,要把多个图形之间的关系保留.并可以还原成图.
           3 可以通过选择 来局部放大缩小
           4 可以把画图过程回演.
           5 每2个图形对象之间我们给他一个权重 (-5到5之间)  可以查询任意2个图形对象关系值是多少
^_^  不知道是不是可行
回复 支持 反对

使用道具 举报

发表于 2006-4-10 10:20:54 | 显示全部楼层
楼上两位的问题都很好,下面一个感觉上难度要大一点,两位的题目本版都可考虑,如采用,将给予一定奖励!
回复 支持 反对

使用道具 举报

发表于 2006-4-13 17:59:09 | 显示全部楼层
原帖由 B147501322 于 2006-4-8 15:27 发表
本人曾在其他区提出此问题,似乎有一定难度:
有32支球队进行单循环比赛,每天进行一场,共赛31天赛完。请列出每天的对阵表(所有球队每天都要出场,每一球队必须与其他31支球队对阵,并且只能对阵一次)


又想了一下...写了段代码可以做了
输出:
01-02 03-04 05-06 07-08 09-10 11-12 13-14 15-16 17-18 19-20 21-22 23-24 25-26 27-28 29-30 31-32
01-03 02-04 05-07 06-08 09-11 10-12 13-15 14-16 17-19 18-20 21-23 22-24 25-27 26-28 29-31 30-32
01-04 02-03 05-08 06-07 09-12 10-11 13-16 14-15 17-20 18-19 21-24 22-23 25-28 26-27 29-32 30-31
01-05 02-06 03-07 04-08 09-13 10-14 11-15 12-16 17-21 18-22 19-23 20-24 25-29 26-30 27-31 28-32
01-06 02-05 03-08 04-07 09-14 10-13 11-16 12-15 17-22 18-21 19-24 20-23 25-30 26-29 27-32 28-31
01-07 02-08 03-05 04-06 09-15 10-16 11-13 12-14 17-23 18-24 19-21 20-22 25-31 26-32 27-29 28-30
01-08 02-07 03-06 04-05 09-16 10-15 11-14 12-13 17-24 18-23 19-22 20-21 25-32 26-31 27-30 28-29
01-09 02-10 03-11 04-12 05-13 06-14 07-15 08-16 17-25 18-26 19-27 20-28 21-29 22-30 23-31 24-32
01-10 02-09 03-12 04-11 05-14 06-13 07-16 08-15 17-26 18-25 19-28 20-27 21-30 22-29 23-32 24-31
01-11 02-12 03-09 04-10 05-15 06-16 07-13 08-14 17-27 18-28 19-25 20-26 21-31 22-32 23-29 24-30
01-12 02-11 03-10 04-09 05-16 06-15 07-14 08-13 17-28 18-27 19-26 20-25 21-32 22-31 23-30 24-29
01-13 02-14 03-15 04-16 05-09 06-10 07-11 08-12 17-29 18-30 19-31 20-32 21-25 22-26 23-27 24-28
01-14 02-13 03-16 04-15 05-10 06-09 07-12 08-11 17-30 18-29 19-32 20-31 21-26 22-25 23-28 24-27
01-15 02-16 03-13 04-14 05-11 06-12 07-09 08-10 17-31 18-32 19-29 20-30 21-27 22-28 23-25 24-26
01-16 02-15 03-14 04-13 05-12 06-11 07-10 08-09 17-32 18-31 19-30 20-29 21-28 22-27 23-26 24-25
01-17 02-18 03-19 04-20 05-21 06-22 07-23 08-24 09-25 10-26 11-27 12-28 13-29 14-30 15-31 16-32
01-18 02-17 03-20 04-19 05-22 06-21 07-24 08-23 09-26 10-25 11-28 12-27 13-30 14-29 15-32 16-31
01-19 02-20 03-17 04-18 05-23 06-24 07-21 08-22 09-27 10-28 11-25 12-26 13-31 14-32 15-29 16-30
01-20 02-19 03-18 04-17 05-24 06-23 07-22 08-21 09-28 10-27 11-26 12-25 13-32 14-31 15-30 16-29
01-21 02-22 03-23 04-24 05-17 06-18 07-19 08-20 09-29 10-30 11-31 12-32 13-25 14-26 15-27 16-28
01-22 02-21 03-24 04-23 05-18 06-17 07-20 08-19 09-30 10-29 11-32 12-31 13-26 14-25 15-28 16-27
01-23 02-24 03-21 04-22 05-19 06-20 07-17 08-18 09-31 10-32 11-29 12-30 13-27 14-28 15-25 16-26
01-24 02-23 03-22 04-21 05-20 06-19 07-18 08-17 09-32 10-31 11-30 12-29 13-28 14-27 15-26 16-25
01-25 02-26 03-27 04-28 05-29 06-30 07-31 08-32 09-17 10-18 11-19 12-20 13-21 14-22 15-23 16-24
01-26 02-25 03-28 04-27 05-30 06-29 07-32 08-31 09-18 10-17 11-20 12-19 13-22 14-21 15-24 16-23
01-27 02-28 03-25 04-26 05-31 06-32 07-29 08-30 09-19 10-20 11-17 12-18 13-23 14-24 15-21 16-22
01-28 02-27 03-26 04-25 05-32 06-31 07-30 08-29 09-20 10-19 11-18 12-17 13-24 14-23 15-22 16-21
01-29 02-30 03-31 04-32 05-25 06-26 07-27 08-28 09-21 10-22 11-23 12-24 13-17 14-18 15-19 16-20
01-30 02-29 03-32 04-31 05-26 06-25 07-28 08-27 09-22 10-21 11-24 12-23 13-18 14-17 15-20 16-19
01-31 02-32 03-29 04-30 05-27 06-28 07-25 08-26 09-23 10-24 11-21 12-22 13-19 14-20 15-17 16-18
01-32 02-31 03-30 04-29 05-28 06-27 07-26 08-25 09-24 10-23 11-22 12-21 13-20 14-19 15-18 16-17
检查一下有没有错误...
代码是
Private Const PLen = 2 '最大数占几个字符
Private Const PAll = 32 '最大数
Private Sub Form_Load()
    Dim i As Integer, temp As String
    Dim V() As String
    ReDim V(0)
    temp = String(PLen - 1, "0") & "#"
    For i = 1 To PAll '初始化...生成字符串"01020304...303132"
        V(0) = V(0) & Format(CStr(i), temp)
    Next
    V = iSplit(V)
    V = iSplit(V) '分割两次以确保后面的不出错
    iMain V, True '开始递归
End Sub

Private Sub iPrint(V() As String) '输出,用"-"表示对战," "分割
    Dim i As Integer, b As Boolean
    For i = 0 To UBound(V) - 1
        Debug.Print CStr(V(i)) & IIf(b, " ", "-");
        b = Not b
    Next
    Debug.Print CStr(V(UBound(V)))
End Sub

Private Sub iChange(V() As String, N1 As Integer, N2 As Integer) '交换数组中的数据
    Dim temp As String
    temp = V(N1)
    V(N1) = V(N2)
    V(N2) = temp
End Sub

Private Function iSplit(V() As String) As Variant '分解...将数组中每个元素分成2段前后相等长度的
    Dim s As String, i As Integer
    Dim l As Integer
    l = Len(V(0)) / 2
    For i = 0 To UBound(V)
        s = s & Mid(V(i), 1, l) & " " & Mid(V(i), l + 1) & " "
    Next
    iSplit = Split(Trim(s))
End Function

Private Sub iMain(V() As String, Optional b As Boolean) '递归
    Dim iV() As String, i As Integer, l As Integer
    l = (UBound(V) + 1) / 4 '交换次数
    If Len(V(0)) > PLen Then '如果数组v没有分割到每个元素为一个队伍编号
        iV = iSplit(V) '分解
        If b Then iMain iV, b '如果是第一次的就话就需要做一下
        For i = 1 To l '每大组进行第一次交换
            iChange V, (i - 1) * 4 + 1, (i - 1) * 4 + 2
        Next
        iV = iSplit(V) '再分
        iMain iV '继续做
        For i = 1 To l '每大组进行第二次交换
            iChange V, (i - 1) * 4 + 1, (i - 1) * 4 + 3
        Next
        iV = iSplit(V) '再分
        iMain iV '继续做
    Else '否则
        If b Then iPrint V '如果是第一行就必须输出一下
        For i = 1 To l '每队进行第一次交换
            iChange V, (i - 1) * 4 + 1, (i - 1) * 4 + 2
        Next
        iPrint V '输出
        For i = 1 To l '每队进行第二次交换
            iChange V, (i - 1) * 4 + 1, (i - 1) * 4 + 3
        Next
        iPrint V '输出
    End If
End Sub
回复 支持 反对

使用道具 举报

发表于 2006-4-14 11:11:23 | 显示全部楼层
第六期擂台A组题已取用  lant20  的题目。谢谢lant20 ,将给你一定的论坛加分,请继续关注本论坛。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-1 04:05

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表