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,要簡單些,但是要注意了遞歸的調用順序和結果的存儲。

            




          主站蜘蛛池模板: 临沧市| 手游| 高邑县| 称多县| 绥滨县| 九龙县| 游戏| 西和县| 罗甸县| 广西| 汝州市| 黎川县| 黄山市| 铁岭县| 象山县| 前郭尔| 遂昌县| 耿马| 黄冈市| 伊宁县| 大冶市| 乐东| 苏州市| 岳池县| 禄丰县| 汽车| 河北省| 教育| 林西县| 启东市| 青阳县| 高安市| 平和县| 浦江县| 阳原县| 维西| 察雅县| 宜州市| 平湖市| 高陵县| 常宁市|