帮忙给弄一个关于数字排列的算法呗~~~

辅导费卡了 2002-07-04 01:49:08
是这样的一个朋友想买采票,他说现在他基本上可以采测到有几个数字组成,(如2个5,3个8,2个9)也就是用这几个数字能有几种排法排成7位数(如5588899)。也就是他随便想几个数字,就用这几个数字来排,看能有多少种排法,都显示出来。
我现在写了一个,但是重复数字的问题还没解决。大家帮忙看看。现在我给出来的是输入四个数字的简易版。
<HTML>
<HEAD>
<TITLE>LOTTERY</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function getSource(){
var max_len=4;
for(var i=0;i<thisform.numb_count.value;i++){
thisform.sel_res.value+=thisform.numbers.value;
}
if(thisform.sel_res.value.length>max_len){
thisform.sel_res.value=thisform.sel_res.value.substr(0,max_len);
}
return false;
}
function getResult(){
var max_len=4;
if(thisform.sel_res.value.length!=max_len){
alert("对不起,您设定的数字的个数不够!");
return false;
}else{
var res_array=new Array();
for(var i=0;i<max_len;i++){
// res.innerHTML+="<br>"+thisform.sel_res.value.charAt(i);
// alert(res.innerHTML);
res_array.push(thisform.sel_res.value.charAt(i));
}
res_array.sort();
res.innerHTML+="<br>---------------------<br>";
for(var i=0;i<res_array.length;i++){
// res.innerHTML+=res_array[i];
}
for(var i=0;i<res_array.length;i++){
for(j=0;j<res_array.length;j++){
if(j==i || res_array[j]==res_array[i]){
continue;
}
for(k=0;k<res_array.length;k++){
if(k==j || k==i || res_array[k]==res_array[j]){
continue;
}
for(l=0;l<res_array.length;l++){
if(l==k || l==j || l==i || res_array[l]==res_array[k]){
continue;
}
serv="<br>"+res_array[i]+res_array[j]+res_array[k]+res_array[l];
res.innerHTML+=serv;
}
}
}
}

thisform.add.disabled=true;
thisform.result.disabled=true;
}
function clearAll(){
document.thisform.sel_res.value="";
res.innerHTML="";
thisform.add.disabled=false;
thisform.result.disabled=false;
return false;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="" name="thisform">
<INPUT TYPE="text" NAME="sel_res" maxlength="7">
<br>
<br>
选择数字:<SELECT NAME="numbers" style="width:50">
<option value="0"> 0 </option>
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
<option value="5"> 5 </option>
<option value="6"> 6 </option>
<option value="7"> 7 </option>
<option value="8"> 8 </option>
<option value="9"> 9 </option>
</SELECT>设定个数:<SELECT NAME="numb_count" style="width:50">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
<option value="5"> 5 </option>
<option value="6"> 6 </option>
<option value="7" selected> 7 </option>
</SELECT><INPUT TYPE="button" name="add" value="添加数字" onClick="return getSource()"><INPUT TYPE="button" name="clear" value="清除所有" onClick="return clearAll()"><INPUT TYPE="button" name="result" value="计算结果" onClick="return getResult();"><br><br>
分析结果:
<span id="res"></span>
</FORM>
</BODY>
</HTML>
...全文
41 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
blues-star 2002-07-04
  • 打赏
  • 举报
回复
算法问题,这样的算法肯定快不了的。
fanjanping 2002-07-04
  • 打赏
  • 举报
回复
你试试将你代码中的4都换成7,我换了其中一个执行了一下,用了好长时间,而且CPU被占满了。
这样输出的组合有很多,你的朋友怎么选择呢?

87,920

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧