平衡數演算法實現

2021-09-24 10:50:31 字數 1018 閱讀 2886

給定乙個整數值,若能有整數前半部分乘積與剩餘部分乘積相等,則為平衡數。

例如:輸入1236

輸出true

分析:123 = 6

輸入1221

輸出true

分析:12=21

輸入1000

輸出true

分析:10=00 / 100 = 0

首先將整數拆分成整數陣列n1。

定義兩個變數p,q,分別代表陣列第乙個下標值和最後乙個下標值。

定義兩個變數res1,res2,分別儲存前半部分乘積和後半部分的乘積,初始值為1。

在p<=q的前提下,

若res1>=res2則表示前半部分值大於後半部分的值,則將q向前移一位,res2的值變為res2n1[q]。反之,q向後移一位,res1的值變為res1n1[p]。

最後比較res1與res2的值大小,相等則返回true。

注:還要考慮整數裡有0的情況。

public

class

balancenum

if(count==1)

return

false;if

(count>=2)

return

true

;//陣列中不含0的情況

while

(p<=q)

else}if

(res1==res2)

return

true

;else

return

false;}

/** * 整數拆分成整數陣列

* @param n

* @return

*/private

static

int[

]ntoiarray

(int n)

return a;

}public

static

void

main

(string arg)

}

演算法題 平衡數

牛牛在研究他自己獨創的平衡數,平衡數的定義是 將乙個數分成左右兩部分,分別成為兩個新的數。左右部分必須滿足以下兩點 1,左邊和右邊至少存在一位。2,左邊的數每一位相乘如果等於右邊的數每一位相乘,則這個數稱為平衡數。例如 1221這個數,分成12和21的話,1 2 2 1,則稱1221為平衡數,再例如...

實現多路平衡歸併演算法

對於外部排序演算法來說,直接影響演算法效率的因素為讀寫外存的次數,即次數越多,演算法效率越低。若想提高演算法的效率,即減少演算法執行過程中讀寫外存的次數,可以增加 k 路平衡歸併中的 k 值。經過計算得知,如果毫無限度地增加 k 值,雖然會減少讀寫外存資料的次數,但會增加內部歸併的時間,得不償失。對...

文藝平衡樹演算法

您需要寫一種資料結構,來維護乙個有序序列。其中需要提供以下操作 翻轉乙個區間,例如原有序列是5 4 3 2 1,翻轉區間是 2,4 結果為5 2 3 4 1 a 5 那麼存入文藝平衡樹之後,再中序遍歷的結果應該還是 即下標從小到大,而不是裡面的值從小到大!這是與普通平衡樹的最大的不同!文藝平衡樹經過...