//»ñµÃÒª¼ò»¯²¿·ÖµÄÆðÖ¹µØÖ· var p1=p2=0; for (var i=0;i<g_smpStr.length;i++) { if (g_smpStr.substr(i,1)=='(') p1++; if (p1==g_smpN+1) {p1=i;break;} } for (var i=p1;i<g_smpStr.length;i++) { if (g_smpStr.substr(i,1)=='(') p2++; if (g_smpStr.substr(i,1)==')') { p2--; if (p2==0) {p2=i;break;} } }
//»ñµÃ¼ò»¯²¿·ÖÍⲿµÄÓÅÏȼ¶ var outPri,outWay,inPri; if (p1!=0 && p2!=g_smpStr.length) { if (f_pri(g_smpStr.substr(p1-1,1),g_smpStr.substr(p2+1,1))==-1) { outWay=2; outPri=g_smpStr.substr(p2+1,1); } else { outWay=1; outPri=g_smpStr.substr(p1-1,1); } } else { if (p1==0 && p2==g_smpStr.length) { outWay=0; outPri=' '; } else { if (p1!=0) { outWay=1; outPri=g_smpStr.substr(p1-1,1); } else { outWay=2; outPri=g_smpStr.substr(p2+1,1); } } }
//»ñµÃ¼ò»¯²¿·ÖµÄÓÅÏȼ¶ var n=0; var charTmp; inPri='*'; for (var i=p1+1;i<p2;i++) { charTmp=g_smpStr.substr(i,1); if (charTmp=='(') n++; if (n==0 && f_pri(charTmp,inPri)==-1) inPri=charTmp; if (charTmp==')') n--; }
<head>
<title></title>
</head>
<body>
<SCRIPT LANGUAGE="javaScript" >
function tdisoper(f0,f1,f2,f3)
{
this[0]=f0;
this[1]=f1;
this[2]=f2;
this[3]=f3;
}
disoper=new tdisoper("-","+","/","*");function oper(f,m,n)
{
if (f==3) return(m*n);
if (f==2) return(m/n);
if (f==1) return(parseFloat(m)+parseFloat(n));
if (f==0) return(m-n);
}function tb(i1,i2,i4,i8)
{
this[1]=i1;
this[2]=i2;
this[4]=i4;
this[8]=i8;
}function valid(F)
{
n=F.count1.options[F.count1.selectedIndex].value;
if (isNaN(F.a1.value)){alert("必须输入整数!"); F.a1.focus(); return(false);}
if (isNaN(F.a2.value)){alert("必须输入整数!"); F.a2.focus(); return(false);}
if (isNaN(F.a4.value)){alert("必须输入整数!"); F.a4.focus(); return(false);}
if (isNaN(F.a8.value)){alert("必须输入整数!"); F.a8.focus(); return(false);}
b=new tb(F.a1.value,F.a2.value,F.a4.value,F.a8.value);
k=0;
F.text.value="";for (i1=1;i1<=8;i1*=2)
for (i2=1;i2<=8;i2*=2)
for (i3=1;i3<=8;i3*=2)
for (i4=1;i4<=8;i4*=2)
{
if ((i1|i2|i3|i4)!=0xf) continue;
for (f1=0;f1<=3;f1++)
for (f2=0;f2<=3;f2++)
for (f3=0;f3<=3;f3++)
{
m=oper(f3,oper(f2,oper(f1,b[i1],b[i2]) ,b[i3] ) ,b[i4]);
if (Math.abs(m-24)<1e-5 ) {
F.text.value=F.text.value+"(("+b[i1]+disoper[f1]+b[i2]+")"+disoper[f2]+b[i3]+")"+disoper[f3]+b[i4]+"\n";
if ((n!=0)&&(++k>=n)) return(false);
}
m=oper(f1, b[i1], oper(f3, oper(f2,b[i2],b[i3]) ,b[i4]) );
if (Math.abs(m-24)<1e-5){
F.text.value=F.text.value+b[i1]+disoper[f1]+"(("+b[i2]+disoper[f2]+b[i3]+")"+disoper[f3]+b[i4]+")\n";
if ((n!=0)&&(++k>=n)) return(false);
}m=oper(f3,oper(f1,b[i1], oper(f2,b[i2],b[i3]) ),b[i4]);
if (Math.abs(m-24)<1e-5){
F.text.value=F.text.value+"("+b[i1]+disoper[f1]+"("+b[i2]+disoper[f2]+b[i3]+"))"+disoper[f3]+b[i4]+"\n";
if ((n!=0)&&(++k>=n)) return(false);
}m=oper(f1, b[i1], oper(f2, b[i2], oper(f3, b[i3], b[i4]) ) );
if (Math.abs(m-24)<1e-5){
F.text.value=F.text.value+b[i1]+disoper[f1]+"("+b[i2]+disoper[f2]+"("+b[i3]+disoper[f3]+b[i4]+"))\n";
if ((n!=0)&&(++k>=n)) return(false);
}m=oper(f2,oper(f1,b[i1],b[i2]), oper(f3,b[i3],b[i4]) );
if (Math.abs(m-24)<1e-5){
F.text.value=F.text.value+"("+b[i1]+disoper[f1]+b[i2]+")"+disoper[f2]+"("+b[i3]+disoper[f3]+b[i4]+")\n";
if ((n!=0)&&(++k>=n)) return(false);
}
}
}
F.text.value=F.text.value+"----END----\n"
return(false);
}function newin(s,target,ww,hh)
{ window.open(s,target,"menubar=0,resizable=1,scrollbars=1,width="+ww+",height="+hh)}
</SCRIPT>
<FORM onsubmit="return valid(this)">请输入四个整数:<BR>
<INPUT TYPE="text" NAME="a1" MAXLENGTH="6" size=5>
<INPUT TYPE="text" NAME="a2" MAXLENGTH="6" size=5>
<INPUT TYPE="text" NAME="a4" MAXLENGTH="6" size=5>
<INPUT TYPE="text" NAME="a8" MAXLENGTH="6" size=5><SELECT NAME="count1" >
<OPTION VALUE="1" selected=on> 只找一个答案
<OPTION VALUE="5" > 最多找5个
<OPTION VALUE=10 > 最多找10个
<OPTION VALUE=0 > 找全部答案
</select>
<BR>
<INPUT TYPE=submit VALUE="计算24点"><BR>
<HR>
<TEXTAREA NAME="text" ROWS="15" COLS="30"></TEXTAREA>
</FORM>
<HR>
<FORM><INPUT TYPE="button" VALUE="返回" onClick="history.back()"></FORM>
</body>
</html>
你说的是哪个贴子,给个连接.
-----
帖子里好象也有提到什么树,但时我看不懂
我把我的程序帖出来,你们看看,给点建议好吗。
=============
<html>
<head>
<title></title>
<Script Language="JavaScript">
//mainº¯ÊýÐèÒª¶Ô²ÎÊý½øÐмì²âvar operStr="+-*"; //¿ÉʹÓõÄÔËËã·ûºÅ£¨³ýºÅÀýÍ⣩
var n=0; //´¢´æµ÷ÓôÎÊý
var g_resultStr=''; //´¢´æ·ûºÏµÄËã·¨
var g_toN; //Ä¿±êÊý
var g_smpStr; //ÓÃÓÚ´¢´æ¼ò»¯µÄËã·¨
var g_smpN; //ÓÃÓÚ´¢´æ¼ò»¯µÄ³Ì¶È//Ö÷º¯Êý
// ÐèÒª¼ÓÈëÑéÖ¤²¿·Ö
function f_main()
{
g_resultStr=''; //Çå¿ÕËã·¨
n=0; //µ÷ÓôÎÊýÖÃÁã
g_toN=arguments[0]; //ÉèÖÃÄ¿±êÊý
var strTmp;
strTmp='f_howtoN('+arguments[1];
for (var i=2;i<arguments.length;i++)
strTmp+=','+arguments[i];
strTmp+=')';
eval(strTmp); //µ÷ÓÃÈ¡µÃËã·¨µÄº¯Êý
var aryTmp=g_resultStr.split(';');
g_resultStr='';
for (var i=0;i<aryTmp.length-1;i++)
{
g_smpStr=aryTmp[i];
g_smpN=0;
f_smp();
g_resultStr+=g_smpStr+'\n';
}
return g_resultStr;
}//È¡µÃËã·¨µÄº¯Êý
// »¹ÐèÒª¼ì²é
function f_howtoN()
{
n++; //µ÷ÓôÎÊý¼Ó1
var varTmp='';
if (arguments.length<1) return false; //·ÇÕý³£Çé¿ö
if (arguments.length==1)
{
try {varTmp=eval(arguments[0]);} //·ÀÖ¹Òì³£
catch(e) {return false;}
if (varTmp==g_toN) //³É¹¦µÄËã·¨
{
g_resultStr+=arguments[0]+';'; //´¢´æËã·¨
return true;
}
else //ʧ°ÜµÄËã·¨
return false;
}
//ʹÓñéÀú·¨ËÑË÷Ëã·¨
//+-*¶Ô˳ÐòÎÞ¹Ø
for (var i=0;i<arguments.length;i++)
{
for (var ii=i+1;ii<arguments.length;ii++)
{
for (var iii=0;iii<operStr.length;iii++)
{
varTmp='f_howtoN(\'('+arguments[i]+operStr.substr(iii,1)+arguments[ii]+')\'';
for (var iiii=0;iiii<arguments.length;iiii++)
if (iiii!=i && iiii!=ii) varTmp+=',\''+arguments[iiii]+'\'';
varTmp+=')';
eval(varTmp); //µÝ¹éµ÷ÓÃ
}
}
}
//³ýºÅ¶Ô˳ÐòÓйØ
for (var i=0;i<arguments.length;i++)
{
for (var ii=0;ii<arguments.length;ii++)
{
if (i==ii) continue;
varTmp='f_howtoN(\'('+arguments[i]+'/'+arguments[ii]+')\'';
for (var iiii=0;iiii<arguments.length;iiii++)
if (iiii!=i && iiii!=ii) varTmp+=',\''+arguments[iiii]+'\'';
varTmp+=')';
eval(varTmp); //µÝ¹éµ÷ÓÃ
}
}
return;
}//¼ò»¯µÄº¯Êý
function f_smp()
{
if(g_smpStr.match(/\(/g)==null) return; //¼ò»¯Íê³É
if(g_smpStr.match(/\(/g).length<=g_smpN) return; //¼ò»¯Íê³É
//»ñµÃÒª¼ò»¯²¿·ÖµÄÆðÖ¹µØÖ·
var p1=p2=0;
for (var i=0;i<g_smpStr.length;i++)
{
if (g_smpStr.substr(i,1)=='(') p1++;
if (p1==g_smpN+1) {p1=i;break;}
}
for (var i=p1;i<g_smpStr.length;i++)
{
if (g_smpStr.substr(i,1)=='(') p2++;
if (g_smpStr.substr(i,1)==')')
{
p2--;
if (p2==0) {p2=i;break;}
}
}
//»ñµÃ¼ò»¯²¿·ÖÍⲿµÄÓÅÏȼ¶
var outPri,outWay,inPri;
if (p1!=0 && p2!=g_smpStr.length)
{
if (f_pri(g_smpStr.substr(p1-1,1),g_smpStr.substr(p2+1,1))==-1)
{
outWay=2;
outPri=g_smpStr.substr(p2+1,1);
}
else
{
outWay=1;
outPri=g_smpStr.substr(p1-1,1);
}
}
else
{
if (p1==0 && p2==g_smpStr.length)
{
outWay=0;
outPri=' ';
}
else
{
if (p1!=0)
{
outWay=1;
outPri=g_smpStr.substr(p1-1,1);
}
else
{
outWay=2;
outPri=g_smpStr.substr(p2+1,1);
}
}
}
//»ñµÃ¼ò»¯²¿·ÖµÄÓÅÏȼ¶
var n=0;
var charTmp;
inPri='*';
for (var i=p1+1;i<p2;i++)
{
charTmp=g_smpStr.substr(i,1);
if (charTmp=='(') n++;
if (n==0 && f_pri(charTmp,inPri)==-1) inPri=charTmp;
if (charTmp==')') n--;
}
//¸ù¾ÝÇé¿ö½øÐмò»¯
if (outWay==0 || f_pri(inPri,outPri)==1 || (f_pri(inPri,outPri)==0 && (outWay==2 || '+*'.indexOf(outPri)!=-1)))
g_smpStr=g_smpStr.substr(0,p1)+g_smpStr.substr(p1+1,p2-p1-1)+g_smpStr.substr(p2+1,g_smpStr.length-p2-1);
else
g_smpN++; //±£ÁôµÄÀ¨ºÅÊý¼Ó1
f_smp();//µÝ¹éµ÷ÓÃ
return;
}//ÓÅÏȼ¶±È½ÏµÄº¯Êý
//0:ͬ¼¶£»1:¸ß¼¶£»-1:µÍ¼¶
function f_pri(p1,p2)
{
//ÓÅÏȼ¶+-*/_
if ((' +-'.indexOf(p1)!=-1 && ' +-'.indexOf(p2)!=-1) || ('*/'.indexOf(p1)!=-1 && '*/'.indexOf(p2)!=-1))
return 0;
else
{
if (' +-'.indexOf(p1)!=-1)
return -1;
else
return 1;
}
}
</Script>
</head>
<body onload="area.value=f_main(3,1,1,2,1);">
<textarea name="area" rows=20 width=500></textarea>
</body>
</html>