`
hanbaohong
  • 浏览: 387623 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用回溯算法实现从题库中随机抽取一题或多题组成规定分数的试卷

    博客分类:
  • ASP
 
阅读更多
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
body,td,th {
	font-size: 9pt;
}
-->
</style></head>

<body>
<%
fen=15
a=array(10,8,5,5,3,3,2,2,1,1)
b=array(1,2,3,4,5,6,7,8,9,10)
dim c(11)
l=ubound(a):fas=0
Set d = CreateObject("Scripting.Dictionary")
response.Write("从以下数中任意抽取一个或多个数,使它们的和是:"&fen&"<br>")
for j=0 to l
	response.write(a(j)& " ")	
next
response.Write("<br><br>可组成的方案:<br>")
call f(0,0)

sub f(k,s)
	if s=fen then
		res=""
		for i=0 to l			
			if c(i)=1 then 
				if res<>"" then res=res & "+"
				res=res & b(i)
				res=res & "(" & a(i) & ")"
			end if
		next
		d.Add fas,res		
		res=res & "<br>"
		response.Write(fas & "、" & res)
		fas=fas+1
		exit sub
	end if
	if s>fen or k>l then exit sub
	c(k)=1
	call f(k+1,s+a(k))
	c(k)=0
	call f(k+1,s)
end sub

Randomize
sjs=Int((fas*Rnd))
response.Write("<br>随机抽的是第"&sjs&"条方案<br>")
response.Write(d(sjs))
%>
</body>
</html>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics