Biến này x
chứa số cần được kiểm tra đối với một mảng. var x = 10; var ary = [ 3,5 ]
Cách tách rời một số bằng các khoản tiền cụ thể
Tôi muốn thử nghiệm nếu x
có thể được bù đắp bằng số tiền của bất kỳ sự kết hợp của các phím trong ary
, sau đó hiển thị những phím làm thêm lên để làm x
.
Trong trường hợp này, không thể sử dụng 3
. Vì vậy, kết quả sẽ = 5, 5
nếu x = 10
(vì chức năng sẽ tìm kiếm mảng và tìm thấy 5 + 5 bằng 10)
Độ dài của mảng và x không được biết. Tôi không sử dụng bất kỳ thư viện nào. Đây là cách xa tôi đã đến vậy, đến nay:
var x = 10;
var ary = [ 3, 5 ];
function cycle(){
var result;
for(var i = 0; i < ary.length; i++){
if(ary[ i ] + ary[ i ] == x){
result = ary[ i ] + ',' + ary[ i ];
}
else if(ary[ i ] + ary[ i + 1 ] == x){
result = ary[ i ] + ',' + ary[ i + 1 ];
}
else if(ary[ i + 1 ] + ary[ i + 1 ] == x){
result = ary[ i + 1 ] + ',' + ary[ i + 1 ];
}
return result;
}
}
var result = cycle();
document.write(result);
tôi biết mã trên là khủng khiếp, không linh hoạt trong ít nhất, và chỉ hoạt động trong trường hợp cụ thể tôi sử dụng nó cho. Làm cách nào để bao gồm tất cả các kết hợp có thể là?
Giả sử mảng vẫn chỉ có 2 giá trị 3
và 5
, ở đây có nhiều ví dụ như thế nào những gì kết quả sẽ nhận được dựa trên x:
nếu x = 8
, kết quả sẽ = 3, 5
;
nếu x = 15
, kết quả sẽ = 5, 5, 5
nếu x = 9
, kết quả sẽ = 3, 3, 3
, vv
Note: Không nên có giới hạn bao nhiêu lần một chìa khóa có thể được sử dụng.
Tại sao chỉ số cùng bổ sung vào bản thân tại 'ary [i] + ary [i] == x'? – guest271314
@ guest271314 Mục đích là để kiểm tra xem có bất kỳ khoản tiền nào cộng thêm x không. Bao gồm việc thêm các chỉ mục vào chính nó tuy nhiên nhiều lần để có được x. Hoặc thêm nó vào bất kỳ chỉ mục nào khác cộng với chính nó để có được x. –
Phân vùng thuật toán số có thể giúp bạn http://stackoverflow.com/questions/400794/generating-the-partitions-of-a-number –