日期:2014-05-16  浏览次数:20314 次

求几个checkbox是否围成一个矩形(铺满里面的所有点)
有几行几列的一个checkbox  
 
  比如这样 1 2 3
  4 5 6
  7 8 9
  10 11 12  

的checkbox

我选 1245 算是矩形 选1379 不算矩形(因为没有铺满里面) 选123456789才算矩形

没成矩形弹出框就行。

求这样的一个算法。。
有思路不会代码了、

从选择的几个点中找出最边的俩个点
然后把这俩个点作为一个矩形先算出里面有几个格子。
最后找出点击的checkbox有多少个。来匹配?

不知道我是否想错了。

求教育。


而且checkbox的value被占用了。行和列只能放id上了。。


 <table style='width:100%;'>

  <%
  int index = 0;
  for (int i = 0; i < 10; i++) {
  
  
  %>
  <tr>
  <% for (int j = 0; j < 10; j++) {
  int blockIndex = index++;
  %>
  <td>

  <div style='width:100%;height: 100%;border:1px dashed black;' align="center">
  位置<%=blockIndex+ 1%>
  <input type="checkbox" name='subBlockIndex' value="<%=blockIndex%>"
  id='<%=i%><%=j%>'/>
  </div>

  </td>
  <% } %>
  </tr>
  <% } %>

  </table>


------解决方案--------------------
<table style='width:100%;'>

<%
int index = 0;
for (int i = 0; i < 10; i++) {
 
 
%>
<tr>
<% for (int j = 0; j < 10; j++) {
int blockIndex = index++;
%>
<td>

<div style='width:100%;height: 100%;border:1px dashed black;' align="center">
位置<%=blockIndex+ 1%>
<input type="checkbox" name='subBlockIndex' value="<%=blockIndex%>"
id='<%=i%>-<%=j%>'/>
</div>

</td>
<% } %>
</tr>
<% } %>

</table>
生成的时候给id中间加一个符号,以便于区分当前行列。
然后判断是找到第一个选中的checkbox,假设为1-1,从id中分解出行1列1然后做循环判断第一行,1-2,1-3等直到第一个未选中的checkbox,可以用二维数据记录checkbox的选中情况,再进行下一行判断只要遇到某一行与之前选中的不同即可判断出结果,否则直到遇到某一行第一个未选中亦出结果。