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

```


本文标签: 矩形 输入 算法 排列 数据