设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1295|回复: 2
打印 上一主题 下一主题

[已经解决] 求一范围算法

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1333
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2010-11-1 22:51:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
SOU到了敌人AI 开发了,对于只有一个主角
来说还暂时不考虑这个,但是如果开发队友系统
并且队友也会群攻的话……




这里有一个固定长宽的矩形框

求矩形框的位置,在这个位置内有最多的敌人数量。

点评

这问的是思路。连你也不懂了,你也小? 倒着长了?  发表于 2010-11-2 17:15
同板凳,神尊殿的SOU系统不是VX的吗.  发表于 2010-11-2 17:14
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv2.观梦者

旅之愚者

梦石
0
星屑
260
在线时间
812 小时
注册时间
2007-7-28
帖子
2148

贵宾

2
发表于 2010-11-1 23:50:02 | 只看该作者
本帖最后由 六祈 于 2010-11-1 23:52 编辑

于是跟上一个方案,接受批斗

  1. def find_rect(total_width, total_height, rect_width, rect_height, events)
  2. weight_array = Array.new(total_width * total_height){0}
  3. events.each{|event| add_weight(event, rect_width, rect_height)}
  4. max_index = weight_array.index weight_array.sort[-1]
  5. return max_index % total_width + 1, max_index / total_width + 1
  6. end
  7. def add_weight(event, rect_width, rect_height)
  8. index = event.x * total_width + event.y
  9. for i in 0...rect_width
  10. for j in 0...rect_height
  11. arr[index - i - j * total_width] += 1
  12. end
  13. end
  14. end
复制代码
算法思路:
构建各个初始点【将该点作为矩形左上点】的权重数组weight_array,并初始化所有元素为0;
迭代每一个事件,将被迭代事件作为矩形右下角,加成权重数组的元素;
取出权重数组的最大值索引,对total_width取余加1为x,除以total_width加1得到y

点评

似乎好方法~  发表于 2010-11-2 17:37

评分

参与人数 1星屑 +376 收起 理由
fux2 + 376 认可答案+脸熟~

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

尽头

梦石
0
星屑
119
在线时间
278 小时
注册时间
2010-6-20
帖子
1280
3
发表于 2010-11-2 17:03:37 | 只看该作者
拜托..这里是XP提问区..

点评

你不懂你还小  发表于 2010-11-2 17:14
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-3-1 19:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表