給定一個長度和寬度固定的的網格,找出該網絡的所有長方形(不包括正方形)

 

常見的基礎面試題目。

舉例子,一個3*4的網格中有多少個1*1不同的格子呢,12個。

有多少個1*2的格子呢?想一下,比如在第一行,應該3個,即4-2+1個,總共三行,那總共有3*3即9個1*2的方格。

同樣的道理,應該有多少個2*1的方格呢?答案是(3-2+1)*4,即8個。

有多少個2*2的網格呢?根據上面的規律應該是(3-2+1)*(4-2+1),即6個。

規律是,對於一個m*n的網格中i*j網格的個數爲(m-i+1)*(n-j+1)個。

答 案:

#include <iostream>
using namespace std;
int cal(int wid, int height)
{
  if(wid<1 || height <1)
    return 0;
  int num = 0;
  for(int i=1;i<=wid;i++)
  {
     for(int j=1; j<= height;j++)
     {
        if(i!=j)
          num += (wid-i+1)*(height-h+1);
     }
  }
  return num;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章