admin 管理员组文章数量: 1184232
2024年3月27日发(作者:模板网站合集)
易语言二维矩形排样
本程序是一个二维矩形排样的程序,使用易语言实现。
程序主要分为以下几个步骤:
1. 输入矩形数据:用户输入矩形的宽和高,以及需要排列的矩
形个数。
2. 排序:根据矩形的面积进行排序,从大到小排列。
3. 排列算法:采用贪心算法,将矩形分为两种情况——竖向和
横向。先将矩形按从大到小顺序排列,然后将第一个矩形放在画布的
左上角,第二个矩形放在第一个矩形的右侧或下方,以此类推。
4. 输出结果:输出排列好的矩形,并计算出画布的总面积。
代码如下:
```
// 定义矩形数据结构体
Type RECT
w, h: Integer
EndType
// 主程序
Function main()
// 输入矩形数据
Dim rects[] As RECT
Dim n As Integer
InputBox "请输入矩形个数n:", "矩形数据输入", n
For i = 1 To n
Dim rect As RECT
InputBox "请输入第" + Str(i) + "个矩形的宽度:", "矩
形数据输入", rect.w
InputBox "请输入第" + Str(i) + "个矩形的高度:", "矩
形数据输入", rect.h
AddToArray rects[], rect
Next
// 按面积进行排序
For i = 1 To n - 1
For j = i + 1 To n
Dim s1 As Integer = rects[i].w * rects[i].h
Dim s2 As Integer = rects[j].w * rects[j].h
If s1 < s2 Then
Swap rects[i], rects[j]
End If
Next
Next
// 排列算法
Dim canvas_w As Integer = 0, canvas_h As Integer = 0
Dim x As Integer = 0, y As Integer = 0
For i = 1 To n
If canvas_w < x + rects[i].w Then
canvas_w = x + rects[i].w
End If
If canvas_h < y + rects[i].h Then
canvas_h = y + rects[i].h
End If
If i < n Then
If rects[i + 1].h > rects[i + 1].w Then
x = x + rects[i].w
Else
y = y + rects[i].h
End If
End If
Locate x, y
Print Str(i)
Next
// 输出结果
MsgBox "画布的总面积为:" + Str(canvas_w * canvas_h)
End Function
```
版权声明:本文标题:易语言二维矩形排样 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711517457a597950.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论