Java Script 求值

来源:互联网 发布:英语杂志软件 编辑:程序博客网 时间:2024/05/23 21:08
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>求值!</title>
</head>
<body>
<table>
<tr>
<td><div>输入数字a1...an,以'|'分隔,英文小数点,如:</div>
<div>1.45|5.78|6.59|4.77</div></td>
</tr>
<tr>
<td><input id='NUMS' type='text'/></td>
</tr>
<tr>
<td><div>输入目标定值,如:</div>
<div>7.23</div></td>
</tr>
<tr>
<td><input id='target' type='text'/><button onclick='test();' accesskey='13'>click</button></td>
</tr>
<tr>
<td>结果:</td>
</tr>
<tr>
<td><div id='resdiv'></div></td>
</tr>
</table>


   <script type="text/javascript">
function test(){
var numStr = document.getElementById('NUMS').value;
var numStrArr = numStr.split('|');
var target = parseFloat(document.getElementById('target').value);
var resArr =new Array();
var resdivEle = document.getElementById('resdiv');
resdivEle.innerHTML = '';

for (var i=1;i<=numStrArr.length;i++){
var r = combine(numStrArr,i);
resArr = addToResArr(resArr,r);
}

for (var i=0;i<=resArr.length;i++){
var sum = getArrSum(resArr[i]);
if (sum==target){
resdivEle.innerHTML += resArr[i] + '<br/>' ;
}
}


}
function copyArr(srcArr){
var destArr = new Array();
for (var i=0;i<srcArr.length;i++){
destArr.push(srcArr[i]);
}
return destArr;
}
function pushElement(srcArr,targetArr){
var resArr = new Array();
for (var j=0;j<targetArr.length;j++){
var tmpArr = copyArr(srcArr);
tmpArr.push(targetArr[j]);
resArr.push(tmpArr);
}
return resArr;
}
/**
* 递归组合算法
* 从 arr[1...n] 中任选 num(0 < num <= n) 个数的所有组合
*/
function combine(arr, num) {
var r = [];
(function f(t, a, n) {
if (n == 0) return r.push(t);
for (var i = 0, l = a.length; i <= l - n; i++) {
f(t.concat(a[i]), a.slice(i + 1), n - 1);
}
})([], arr, num);
return r;
}

function addToResArr(resArr,srcArr){
for (var i = 0; i< srcArr.length; i++) {
resArr.push(srcArr[i]);
}
return resArr;
}

function getArrSum(arr){
if (arr == undefined)
return 0 ;
var sum = parseFloat(0);
for (var i=0;i<arr.length;i++){
sum = parseFloat(sum)+parseFloat(arr[i]);
}
return sum;
}
   </script>
</html>
原创粉丝点击