尽量减少学生的作弊行为

时间:2013-08-13 02:44:24

标签: recursion graph combinations

给定一个大小为m * n的矩阵,以这样的方式安排k学生,以便最大限度地减少考试中的作弊

我的想法:

采用蛮力方法,创建所有可能的学生安置组合,并返回最低作弊分数,而作弊分数定义为每两名学生之间曼哈顿距离的总和。

时间&这种方法的空间复杂性非常糟糕,任何更好的解决方案?

2 个答案:

答案 0 :(得分:0)

1)几何直觉 - 也许尝试将前4个放置在正方形的外角,然后从那里向内螺旋?

这对于“毕达哥拉斯距离”大概有效,也许你可以调整“曼哈顿距离”相当于向内螺旋路径&然后将学生线性地放在那里。


2)或者,您可以将学生按顺序放在下一个作弊最小的位置;然后,一旦所有学生被安置,扰乱地点以实现“整体最低限度”。

我可能最喜欢2)最好的方法。

答案 1 :(得分:0)

int 2d array to store  4 values for every variable 
0:no neighbor
1:diagnol neighbor
2:horizontol or vertical neighbor
4:filled seat
now everytime create randomindex for row and column and first priority given to no neighbor until this expires
Then priority given to diagnol until expires
at last horizontol or vertical neighbor

repeat above steps till count=k