㈠ C語言迷宮問題,求該演算法的時間和空間的復雜度。迷宮的路徑已經定義好,求出路的演算法。
該演算法是不穩定的,其時空復雜度不僅和m,n有關,還和mg[][]的具體數值有關。
最壞情況下:每個點都試探過才走到終點。此時時間復雜度為:(m*n-1)*4,(其中4為4個方向),空間復雜度m*n*2,(其中m*n為存儲迷宮圖空間,m*n為棧空間);
再好情況下:一次試探過就走到終點。此時時間復雜度為:(min(m,n)-1),空間復雜度m*n;
所以:
該演算法時間復雜度為:[(m*n-1)*4+(min(m,n)-1)]/2,約為2×m×n
空間復雜度為3*m*n/2
㈡ C語言:請列舉一個以時間換空間或以空間換時間的例子,下面代碼: 請幫忙解釋一下空間和時間轉換的原理
第一個,用空間換時間,swap中定義了c,就是在內存中又開辟了一個int內存空間,然後一次swap需要進行三次賦值運算。
第二個,用時間換空間,swap中沒有額外的定義變數,也就是沒有內存的開辟。但是一共進行了3次加(減)法運算和三次賦值運算。運算次數比第一個多,所以時間效率低,但是沒有開辟額外內存,所以空間效率高。