33,008
社区成员
发帖
与我相关
我的任务
分享
<SCRIPT LANGUAGE="JavaScript">
var Arr=[3,3,2,2,5];
var AllResult=new Array();
var AllExpress=new Array();
//AllResult是不重复的结果集
//AllExpress是所有表达式
function F(x,result,Express)
{
if(x==Arr.length-1){
var IsExist=false;
AllExpress.push( "<br/>" + Express +"=" + result );
for(var i=0;i<AllResult.length;i++){
//查找重复,在其他语言里用Hash表会快很多
if(AllResult[i]==result)
{
IsExist=true;break;
}
}
if(!IsExist){AllResult.push(result);}
}
else
{
F(x+1,result+Arr[x+1],Express+"+" + Arr[x+1]);
F(x+1,result-Arr[x+1],Express+"-" + Arr[x+1]);
F(x+1,result*Arr[x+1],Express+"*" + Arr[x+1]);
if(Arr[x+1]!=0)F(x+1,result/Arr[x+1],Express+"/" + Arr[x+1]);
}
}
F(0,Arr[0],Arr[0].toString());
document.write(AllExpress.toString() );
alert( AllResult.length);
</SCRIPT>
if(x==Arr.length-1)
这里要是改成
if(x==Arr.length-1 && result==24 )
就是24点牌。 把判断重复那里去掉就可以了。