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

本文通过VBScript实现了一种算法,该算法能够找出数组中元素的不同组合,这些组合的元素之和等于预设的目标数值。代码展示了如何生成这些组合并随机选择一种可能的组合。
<%@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>

 

本软件是为广大需要自动命系统的学校提供方便。用户在使用时首先要将我们为您准备好的数据库连接到SQL上,然后才能使用。 由于用户是首次使用,所有要先进行用户注册。本软件只允许一个用户注册,注册完后请记住密码,以便以后使用。 为了让您能够检验我们的产品的实用性,我们预先在数据库中存放了一些相关试。在您真正使用的时候,您可以通过SQL想数据库中输入试,也可以通过我们软件为您提供的“添加”功能进行试输入。为了避免试抽取时可能会出现的试重复现象,检验您输入适当的试。 下面介绍一下我们本软件的结构以及相关功能: 1.用户登录窗口 包括:用户名、用户密码、登录及用户信息修改。 2.用户信息修改窗口 包括:用户名修改、用户密码修改。 3.用户注册窗口 包括:用户名注册、用户密码注册。 4.自动命系统窗口 包括:系统(返回系统登录、推出系统)、试更新(C#试更新、.net 试更新、高数试更新)、试检索(C#检索、.net 试检索、高数试检索)、自动命C# 自动命、.net 自动命、高数自动命)、帮助(关于软件、联系我们)。 5.试检索及更新窗口(两者共用) 对检索包括:基本的菜单栏、工具栏、试栏(型、号、搜索)。 对更新包括:基本的菜单栏、工具栏、试栏(型、号、搜索、添加、删除、更新)。 6.自动命窗口 包括:基本的菜单栏、工具栏、命栏(型、数、难度系数、总分、命) 以上为本软的概述,在使用中遇到问时,请按F1寻求帮助。 感谢使用!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值