iOS演算法 三條線上4個數字之和相等的演算法

2021-08-15 19:39:00 字數 1511 閱讀 2588

最近碰到這樣一道演算法題:

a--i 為 1--9 的數字,且不重複,求a--i為何值時,三條線上的四個數字之和相等,

即 a+b+c+d = d+e+f+g = g+h+i+a

最初思路:

1、a -- i ,是1--9的數字,且不能重複,其實第乙個數字是 c9取1,第二個數字是 c8取1,第三個數字為 c7取1 ... 即最終能夠組合成 a9取9 ,即 362880 組資料。

2、362880 組資料中,找出符合  a+b+c+d = d+e+f+g = g+h+i+a ,即為結果資料

3、dataary 儲存每組的這 9 個數字,usedary 儲存已經使用的數字。

實踐:

/**

獲取符合條件的數

@param index 當前數的位置

@param count 總數

*/- (void)dealdatawithindex:(nsinteger)index count:(nsinteger)count

if (index == count)

return;

}for (int i=0; i

其中,判斷當前9個數是否符合要求的演算法為:

- (bool)sumdidequal

for (int i=3; i<=6; i++)

for (int i=6; i

在檢視裡呼叫:

- (void)viewdidload

結果:由於資料量比較大,執行時,會花一定時間。

結果如下,總組數符合**,符合條件的一共有 864 組資料:

totalcount = 362880;//總組數

resultcount = 864; // 符合條件的組數

ps:後來無意中發現,這裡有對此題的c++演算法實現。分析了下,思路差不多,唯一的區別就是,他重複陣列裡儲存的是 bool 值來記錄當前值是否已經被使用。以下,是我按照他的思路更改的**,最終結果都是一樣的。

/**

獲取符合條件的數

@param index 當前數的位置

@param count 總數

*/- (void)dealdatawithindex:(nsinteger)index count:(nsinteger)count{

if (!usedary) {

usedary = [nsmutablearray arraywithcapacity:count];

dataary = [nsmutablearray arraywithcapacity:count];

resultcount = 0;//符合要求的總數

totalcount = 0;//總數

//初始儲存

for (int j=0; j

4個數字計算24點java演算法(附原始碼)

今天看到乙個帖子說程式設計師面試考24點演算法,想為什麼不用程式來實現呢。在網上沒有找到非常完美的演算法,包括那個24點計算器,給出的結果重複的也較多。所以自己寫了乙個。在這兒貼出來給大家分享一下。附原始碼。給出4個1 10之間的數字,使用加 減 乘 除和括號列出乙個計算結果為24的算式。比如 3 ...

三個數之和,最接近目標數的演算法python實現

1.給定乙個陣列和目標數,求陣列中三個數之和最接近目標數的和,假設陣列至少有一組和滿足條件。nums.sort l len nums sum nums 0 nums 1 nums 2 for i in range 0,l 2 if nums i nums i 1 continue next i 1 ...

4個數字能組成互不相同且無重複數字的三位數?

4個數字 1,2,3,4 能組成多少個互不相同且無重複數字的三位數?各是多少?import time starttime time.clock digits 1,2,3,4 原始數字 threedigits n 0for i in digits 百 for j in digits 十 for k i...