一个比较纠结的问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形

素年 2014-10-28 05:26:32
有木有比较好一点的算法。。。

我的思路是:
1:得到总面积,随机得到分割小矩形的个数。
2:将总面积分给若干个小矩形。
3:计算小矩形长和等于总长,宽和等于总宽,取其中一种。

有木有更好的办法,高人指点一下!!!感谢。最好是有java代码。。

原帖:http://bbs.csdn.net/topics/390916298
...全文
570 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_x1979 2014-11-05
  • 打赏
  • 举报
回复
试试我这个方法。 (1) 如果要求分割的矩形数量为1,则返回自身 (2) 如果要求分割的矩形数量为2,则在四条边(四个顶点除外)上随机取一个点,可以分割两个矩形,完成。 (3) 如果要求分割的矩形为n,且n > 2,则先递归分出n - 1个小矩形,然后任取一个小矩形,分割出2个小矩形,完成。
zhouxiaofeng1021 2014-11-03
  • 打赏
  • 举报
回复
个比较纠结的问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形 问题分析: “计算小矩形长和等于总长,宽和等于总宽,取其中一种” 根据这一条件,已经把答案固定死: 要么画横线要么画竖线分割矩形,不可能出现交叉线,否则长度不符合要求,可以证明 1.小矩形长和等于总长 这个是随机生成N条竖线分割矩形 2..小矩形宽和等于总宽 这个是随机生成N条横线分割矩形 如果没有这一条件: 可以这样分割,在矩形内随机生成N点不重叠的点 然后从上而下或者从左到右(根据随机点的坐标位置)的顺序依次分割矩形
cnmhx 2014-11-01
  • 打赏
  • 举报
回复
我觉得如文中方法不可行。 总面积==随机得到分割小矩形的面积之和,如果严格成立,则: 将总面积置为1=2^0,其余的小矩形的面积只能是2^(-j)。 比如,1=2^(-1)+12*2^(-2)... 你只需要随机产生满足条件的小矩形的各个尺度上的数目即可。
Tiger_Zhao 2014-10-30
  • 打赏
  • 举报
回复
分割的是周长而不是面积?
那么 r 分割成 r1、r2 时按周长来{
  r1.周长 = 随机返回不包括首尾(0,r.周长)
  r2.周长 = r.周长 - r1.周长
  r1、r2 的长宽再从各自的半个周长中随机分割
}
素年 2014-10-30
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
光看题目是没有对小矩形有什么限制,你的思路3不明白作用。 我的思路: 原始矩形放入集合A 随机一个小矩形个数c 循环直到 A.个数 = c {   i = 随机范围(0, A.个数-1)   将 A[i] 从集合中取出记为 r   将 r 随机分隔成两个矩形 r1、r2 {     先随机选横边或竖边     再在这条边上随机选切割位置   }   将 r1、r2 放入集合A } 输出A的成员
- -。。。 最后集合A 里面所有矩形的长宽能取到吗-。- 相加后 是否能等于大矩形的长宽- -
Tiger_Zhao 2014-10-29
  • 打赏
  • 举报
回复
光看题目是没有对小矩形有什么限制,你的思路3不明白作用。

我的思路:
原始矩形放入集合A
随机一个小矩形个数c
循环直到 A.个数 = c {
  i = 随机范围(0, A.个数-1)
  将 A[i] 从集合中取出记为 r
  将 r 随机分隔成两个矩形 r1、r2 {
    先随机选横边或竖边
    再在这条边上随机选切割位置
  }
  将 r1、r2 放入集合A
}
输出A的成员

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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