• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 51, 文章 - 1, 評論 - 41, 引用 - 0
            數據加載中……

            數方塊

                  有這樣一道智力題,4*4的方塊(見圖)中包含有多少個子方塊,

            這個道題簡單,但比較繁瑣。如果細心的話會得出這樣的結果:

            1*116

            2*29

            3*34

            4*41

            總共:30



                  如果將問題泛化,問N*M的矩陣包含多少個子矩陣。這個結果就不像上題那么直觀,能數出來。這樣數也不符合編程的思維方式。其實這類問題類似于遍歷問題,即遍歷某個集合的每個元素,然后進行操作。這個問題是遍歷所有的矩陣,執行累加操作。這類問題需要考慮兩個方面:迭代項和迭代范圍。

            1. 迭代項:一般為元素的鍵值,它用來區分元素。它包含一個或多個元素的屬性。這個問題中可以找出“高”、“寬”和“位置”作為鍵值。“高”和“寬”記為“h”和“w”。“位置”可以轉換為左上角方塊的位置,有兩個坐標記為“x”和“y”。這樣<h,w,x,y>就代表一個矩陣。問題則對這四個量迭代。

            2. 迭代范圍:可以通過確定鍵值的取值范圍和接受函數來確定。接受函數指判斷鍵值是否合法的函數。在這個問題中,“h”和“w”的取值范圍是[1,N][1,M]。由于矩陣的左上角方塊的位置加高加寬,不能超出N*M這個大矩陣,因此“x”和“y”的取值范圍是[0,N-h][0,M-w](坐標從0開始)。當然“x”和“y”的取值范圍也可以是[1,N][1,M]。然后在接受函數中排除不合法的值。

                  當有了迭代項和迭代范圍,則可以編寫循環遍歷每一個元素,然后累加。這問題的結果為M*N(M+1)*(N+1)/4。









            posted on 2011-01-04 22:45 lemene 閱讀(451) 評論(0)  編輯 收藏 引用

            无码精品久久久久久人妻中字 | 97精品依人久久久大香线蕉97| 久久久久这里只有精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久精品人妻一区二区三区四| 7777久久久国产精品消防器材| 久久国产乱子伦免费精品| 精品久久久久久久久久久久久久久| 亚洲人AV永久一区二区三区久久| 亚洲国产精品无码久久久蜜芽| 99久久综合国产精品二区| 欧美粉嫩小泬久久久久久久 | 精品国产一区二区三区久久| 久久夜色撩人精品国产| 国产精品美女久久久久| 伊人久久大香线蕉无码麻豆| 久久99中文字幕久久| 777午夜精品久久av蜜臀| 久久久综合香蕉尹人综合网| 国产精品视频久久久| 天堂久久天堂AV色综合| 日本加勒比久久精品| www亚洲欲色成人久久精品| A级毛片无码久久精品免费| 午夜视频久久久久一区 | 丁香狠狠色婷婷久久综合| 久久久久人妻一区二区三区| 国产69精品久久久久99| 99久久中文字幕| 国产精品免费福利久久| 国产精品久久影院| 99国产精品久久久久久久成人热| 久久久久久午夜成人影院| 99久久国产精品免费一区二区| 久久综合亚洲色HEZYO社区| 日韩电影久久久被窝网| 久久久久一级精品亚洲国产成人综合AV区| 久久久青草久久久青草| 91精品国产91久久久久久青草| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久91精品国产91久久户|