1. 程式人生 > 實用技巧 >【Java學習】漢諾塔

【Java學習】漢諾塔

1.矩陣乘法

矩陣乘法(就是線性代數裡學過那個)是對矩陣的一種基本運算,僅當矩陣A列數與矩陣B行數相等時AB才有意義。由A(m,n)B(n,p)可得到C(m,p);矩陣乘法滿足結合律與分配律,但不滿足交換律,因為比較簡單所以這裡就不詳細講了。
例題:

    /*
    	假設 A 是 m*p 的矩陣 , B 是 p*n 的矩陣
    	記 C = AB (C 是 矩陣 A與B的乘積)
    	那麼 C 是 m*n 的矩陣 
    */
    for (int i = 1;i <= m;++i)//A的行 
    {
    	for (int j = 1;j <= n;++j)//B的列 
    	{
    		for (int k = 1;k <= p;++k)//通過公式求C 
    		{
    			C[i][j] += A[i][k]*B[k][j];
    		}
    	}
    }
注意:方陣也不滿足交換律
2.快速冪

比較簡單,話不多說直接上程式碼

int Pow(int a,int b){
    int ans = 1;
    int base = a;
    while(b){
        if(b & 1) ans *= base;
        base *= base;
        b >>= 1;
    }
    return ans;
}

需要取模:

#define mod 1000000007
int pow_mod(int a,int b){
    int ans = 1;
    int base = a%mod;
    while(b){
        if(b & 1) ans = (ans*base)%mod;
        base = (base*base)%mod;
        b >>= 1;
    }
    return ans;
}
3.矩陣快速冪