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次,則復(fù)雜度為n^3*k。

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


          反復(fù)平方法,迭代版的, 以整數(shù)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,要簡單些,但是要注意了遞歸的調(diào)用順序和結(jié)果的存儲。

            




          主站蜘蛛池模板: 奉节县| 上高县| 新巴尔虎左旗| 阜阳市| 岢岚县| 老河口市| 阿坝| 永春县| 益阳市| 安阳县| 广汉市| 洛浦县| 锡林郭勒盟| 瑞金市| 钟祥市| 铅山县| 福建省| 磐安县| 连江县| 威宁| 沐川县| 三明市| 罗平县| 双流县| 讷河市| 喜德县| 黎平县| 平定县| 泗水县| 毕节市| 武汉市| 蒙自县| 克什克腾旗| 金沙县| 安国市| 长丰县| 诸暨市| 绥化市| 司法| 东光县| 尼勒克县|