在業(yè)主群里,有鄰居問一道數(shù)學(xué)題,34567,填在圓圈里,使每條線上三個(gè)數(shù)的和相等?如下圖所示:
要求是至少給出三對(duì)
這位鄰居很是心急,一道也沒做出來,對(duì)于程序員來講,其實(shí)不難,借助于計(jì)算機(jī)很容易實(shí)現(xiàn),于是用js簡(jiǎn)單地實(shí)現(xiàn)了(沒有特別進(jìn)行優(yōu)化,層次有點(diǎn)深)。
var arr = [3, 4, 5, 6, 7]; var size = arr.length; var maxLength = 3; var t = Array(); var tmp = []; var i = 0; for (var a = 0; a < size; a++) { for (var b = 0; b < size; b++) { tmp = []; for (var d = 0; d < size; d++) { if (b != a && b != d && a != d) { tmp.push(arr[a]); tmp.push(arr[b]); tmp.push(arr[d]); if (tmp.length == maxLength) { t[i] = tmp; i++; tmp = []; } } } } } if (t.length > 0) { var tSize = t.length; for (var m = 0; m < tSize; m++) { for (var n = 0; n < tSize; n++) { if (m != n && t[m][1] == t[n][1]) { if (arrayEquesCount(t[m], t[n]) == 1) { if (t[m][0] + t[m][1] + t[m][2] == t[n][0] + t[n][1] + t[n][2]) { console.log(t[m] + "==" + t[n]); } } } } } } function arrayEquesCount(arr1, arr2) { var count = 0; var arr1Size = arr1.length; var arr2Size = arr2.length; for (var m = 0; m < arr1Size; m++) { for (var n = 0; n < arr2Size; n++) { if (arr1[m] == arr2[n]) { count++; } } } return count; }
最終答案不考慮位置關(guān)系,共有24組,如下圖所示: