posts - 195, comments - 34, trackbacks - 0, articles - 1
          pku3233:Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak.

          分析:矩陣相乘O(n^3), 有k次,則復雜度為n^3*k。

          使用矩陣技巧,構造:
              B=  |  A  A  |
                    |  O  I   |
          則B的乘方的結果其右上會是S,其他三個不變。此時化成了矩陣乘方問題,此時可以使用反復平方法,這樣復雜度為(2n)^3*logk


          反復平方法,迭代版的, 以整數a^m為例:
          int pow(int a, int m)
          {
            
          int y = 1;
            
          int z = a;
            
          while(m > 0)
            
          {  
               
          if( (n&1)==1 ) y = y*z;
               z 
          = z * z;
               n 
          = n >> 1;
            }

            
          return y;
          }
          遞歸的可以不用變量Z,要簡單些,但是要注意了遞歸的調用順序和結果的存儲。

            




          主站蜘蛛池模板: 永城市| 临城县| 买车| 建湖县| 葫芦岛市| 石河子市| 浦东新区| 凤台县| 揭东县| 图片| 海兴县| 启东市| 上犹县| 眉山市| 偃师市| 枞阳县| 板桥市| 阿图什市| 通州市| 岫岩| 荔浦县| 牙克石市| 淳化县| 秭归县| 开化县| 砚山县| 淮南市| 临潭县| 石城县| 阿图什市| 霍山县| 汨罗市| 石楼县| 洛阳市| 那坡县| 凤凰县| 西畴县| 屏山县| 江永县| 肇庆市| 泰顺县|