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

<%@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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值