面試題:長方形個數計算

給定一個高度和寬度組成的網格,返回該網絡中總共的長方形(不包括正方形)的個數。eg:width=3,height=3。 咱們不妨考慮一個3*4的網格。首先咱們考慮在什麼狀況下,出來的是正方形。當長和寬相等時,出來的就是正方形了。撇開正方形不考慮,一個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)個。 好了,那就很簡單了,獲得這題的答案:網絡

using system;
using system.collections.generic;
using system.linq;
using system.text;

namespace consoleapplication1
{
    class program
    {
        static void main(string[] args)
        {
            console.writeline(rectanglenum(5, 6));
        }

        static int rectanglenum(int m, int n)
        {
            int num = 0;
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    num += i == j ? 0 : (m - i ) * (n - j);
                }
            }
            return num;
        }
    }
}
相關文章
相關標籤/搜索