关于矩阵中寻找所有矩形的问题

  由于本人的知识有限,或许对这个问题的描述并不怎么到位,标题取的并不好,还望路过的朋友们能指点。

 

  问题是这样的:

   ( ....,这些矩形都算的)

  像这么一个4*4的矩阵,求出里面有多少个矩形。 

  起初,当然是想去用一些和我们比较常用的用到矩阵的算法去解决。当然没有想到解决方法。

  想不到,就去google了,或许是因为对这个问题表述的比较差,没有找到解决方法。后来去群里问,有群友说这个问题可以用“杨辉三角”可以解决,不记得“杨辉三角”了,在百度百科看了半天,也不懂怎么去用“杨辉三角”解决,没有能领悟那位群友的意思。

  后来又有个群友给了个链接给我(http://www.adminvc.com/bbsid-95530-9.html),看了下,那篇帖子里的讲的是“等边矩阵中寻找所有等边矩形(正方形)”,里面的一个算法是这样的(一段PHP代码):  <?php
                  $total=0;
                  for($length=1;$length<=8;$length++)
                  {
                    $grille=$length*$length;
                    $total+=$grille;
                    if($length<8)
                      echo $length . "*" . $length . "+ ";

                    else
                      echo $length . "*" . $length . "= " . $total;
                  }
              ?>

  这并不能解决我的问题,但至少是给了我一个提示。

  我的思路是这样的:
  表述能力比较差,我就简短点说吧,就是对行进行遍历同时对列进行遍历。我不知道这算不算是矩阵乘法,或者应该说是数组乘法。

  贴个C#代码:

           int row = int.Parse(txtWidth.Text.Trim());
            int column = int.Parse(txtHeight.Text.Trim());
            int total = 0;
            for (int i = 0; i < row; i++)
            {
                for (int j = i; j < row; j++)
                {
                    for (int m = 0; m < column; m++)
                    {
                        for (int n = m; n < column; n++)
                        {
                            total++;
                        }
                    }
                }
            }

 

  

posted on 2010-12-31 11:19  $tommix  阅读(406)  评论(0)    收藏  举报

导航