扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
N皇后的回溯算法
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出青阳免费做网站回馈大家。
会员推荐 阅读1次 2006-1-24
Option Explicit
''N皇后互不攻击问题的回溯算法
Private Sub Command1_Click()
Dim n As Long
Dim i As Long, j As Long
Dim a() As Long
n = CLng(Text1.Text)
ReDim a(1 To n)
For i = 1 To n
a(i) = 1
Next
'*算法实现
'设i-1个皇后已经放好,判断第i个皇后的位置,如果和前面i-1个中的任意一个有攻击,则该皇后向前走一步.
'直到放好为止,如果该行没有位置可放,则表示前i-1个皇后的位置有问题,先将该第i个皇后回到第一列,
'再回溯到第i-1个皇后,将该皇后向前走一步,直到放好为止,如果不行,先将该皇后回一列,再回溯到第i-2个皇后.
'如此,直到所有皇后放好为止.
'---------------------------------------------------------------------------------------------
For i = 2 To n
10:
If a(i) = n Then
For j = 1 To i - 1
If a(j) = a(i) Or Abs(a(i) - a(j)) = i - j Then a(i) = a(i) + 1: GoTo 10
Next
If i = n Then MsgBox "有解" ''要求多解的话,可以再继续
Else
a(i) = 1
i = i - 1
a(i) = a(i) + 1
If i = 1 Then
If a(i) n Then MsgBox "无解": Exit Sub
i = 2
End If
GoTo 10
End If
Next
'---------------------------------------------------------------------------------------------
grd.Rows = 0
grd.Cols = 0
grd.Rows = n + 1
grd.Cols = n + 1
For i = 0 To n
grd.TextMatrix(0, i) = i
grd.TextMatrix(i, 0) = i
grd.ColWidth(i) = 225
Next
For i = 1 To n
grd.TextMatrix(i, a(i)) = "*"
Next
End Sub
1、vb.net 完全符合面向对象的编程语言抽象、封装、继承的四大特性,而vb不支持继承。
2、错误处理不同。
vb中只是On Error.....goto和On Errer Resume Next ,这些错误称为非结构化异常处理。而在vb.net中采用的结构化异常处理机制,try...catch....finally控制。
3、两者产生的窗体不同。
vb.net 允许创建不同类型的应用程序,例如,创建ASP.NET和ASP.NET Web 服务应用程序,还允许创建控制台应用程序和作为桌面服务运行的应用程序。但是vb 只能创建Windows窗体。
4、数据库访问的差别。
vb6.0是通过ADO(Active X Data Objext)来实现对数据库访问。而vb.net 是通过ADO.NET来访问数据库。
扩展资料
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。
“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上应用得最为广泛的语言。
Visual Basic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序 。
参考资料:百度百科-Visual Basic
人工智能也就是所谓的AI(Artificial Intelligence) 是一门很抽象的技术 AI程序的编写不需要依据任何既定的思考模式或者规则 尤其是游戏中的AI可以完全依程序设计者本身的思考逻辑制作 我个人认为人工智能的核心应该是使计算机具有自动的处理事件的能力 而我们的所有的研究也应该围绕着这一方向 主体是策略类的人工智能
策略类人工智能可以说是AI中比较复杂的一种 最常见的策略类AI游戏就是棋盘式游戏 在这类游戏中 通常的策略类AI程序都是使计算机判断目前状况下所有可走的棋与可能的获胜状况 并计算当前计算机可走棋步的获胜分数或者玩家可走棋步的获胜分数 然后再决定出一个最佳走法 下面先介绍一下五子棋的AI构想
五子棋的AI构想
有句话叫 当局者迷 旁观者清 但这句话在由AI所控制的计算机玩家上是不成立的 因为计算机必须知道有那些获胜方式 并计算出每下一步棋到棋盘上任一格子的获胜几率 也就是说 一个完整的五子棋的AI构想必须 能够知道所有的获胜组合
建立和使用获胜表
设定获胜的分数
使电脑具有攻击和防守的能力
一 求五子棋的获胜组合
在一场五子棋的游戏中 计算机必须要知道有那些的获胜组合 因此我们必须求得获胜组合的总数 我们假定当前的棋盘为 *
( )计算水平方向的获胜组合数 每一列的获胜组合是 共 列 所以水平方向的获胜组合数为 * =
( )计算垂直方向的获胜组合总数 每一行的获胜组合是 共 行 则垂直方向的获胜组合数为 * =
( )计算正对角线方向的获胜组合总数 正对角线上的获胜组合总数为
+( + + + + )* =
( )计算反对角线方向的获胜组合总数 反对角线上的获胜组合总数为 +( + + + + )* = 这样所有的获胜组合数为 + + + =
二 建立和使用获胜表
我们已经计算出了一个 * 的五子棋盘会有 种获胜方式 这样我们可以利用数组建立获胜表 获胜表的主要作用是 判断当前的获胜方式是否有效 判断当前的获胜方式中到底有多少子落入该获胜组合中 详细的使用您将在后面的程序中可以看出
三 分数的设定
在游戏中为了让计算机能够决定下一步最佳的走法 必须先计算出计算机下到棋盘上任一空格的分数 而其中最高分数便是计算机下一步的最佳走法
原理 我们判定当前讨论的空格与当前讨论的点有几种获胜的方式 有几种该空格就加几分 这种原理初听起来似乎是无法入手 没关系 当您了解我们后面的程序后您就会明白这种决策原理了
这种决策有一些缺陷 因为如果只根据这个模型设计 就有可能出现电脑或玩家有三个子连成一线的时候 计算机却判断不出 它认为其他某些空格是当前的获胜的最佳位置而不去攻击或防守 没关系我们完全可以通过一个加强算法来改变当前的分值情况 也就是说当电脑或玩家有三个子或四个子连成一线时 我们通过加强算法将当前与三个子或四个子有关的空格的分值提高 从而可以弥补这一缺憾
四 攻击与防守
以上的方式 事实上计算机只是计算出了最佳的攻击位置 为了防守我们还应计算当前玩家的最佳的攻击位置 这样有什么用呢?道理很简单 如果玩家最佳攻击位置的分数大于计算机最佳攻击位置上的分数 那么计算机就将下一步的棋子摆在玩家的最佳攻击位上以阻止玩家的进攻 否则计算机便将棋子下在自己的最佳攻击位置上进行攻击
事实上 这个AI构想是很强大的如果你不是很厉害的五子棋高手的话 可能很快会被计算机打败 我在联众上可是中级棋手啊 跟这种构想打的时候胜率也不是很高
使用编写五子棋
一 编写前的准备
用计算机的思想描述整个下棋的过程
考虑步骤
( )为了简便我们可以先让电脑先走第一步棋 电脑每走一步就会封掉许多玩家的获胜可能情况
( )当玩家走棋的时候我们首先应该考虑玩家走棋的合法性
( )如果合法 那么玩家也会封掉许多电脑的获胜的可能情况
( )电脑的思考路径 首先判断当前玩家和电脑的所有获胜组合是否需要进行加强赋值 是进行加强赋值 否则进行普通的赋值
( )比较当前玩家和电脑谁的分值最大 将分值最大的点作为电脑的下一步走法
利用窗体和图形工具建立五子棋的棋盘界面
( )添加一个picturebox控件
作用 使用picturebox控件绘制棋子和棋盘
( )添加一个label控件
作用 显示当前的获胜标志 也就是当某一方获胜或和棋时显示此标签
( )添加一个mainmenu控件
作用 控制游戏的开始或结束
( )添加一个mediaplay组件
作用 使程序可以播放音乐
设置整体框价
我们采取 * 的棋盘 为主要的平台 利用数组定义整个棋盘桌面 利用数组定义获胜组合以及获胜标志等
二 声明全局数组和变量
定义虚拟桌面
Dim table( ) As Integer定义当前玩家桌面空格的分数
Dim pscore( ) As Integer定义当前电脑桌面空格的分数
Dim cscore( ) As Integer定义玩家的获胜组合
Dim pwin( ) As Boolean定义电脑的获胜组合
Dim cwin( ) As Boolean定义玩家的获胜组合标志
Dim pflag( ) As Boolean定义电脑的获胜组合标志
Dim cflag( ) As Boolean定义游戏有效标志
lishixinzhi/Article/program/ASP/201311/21668
vb.net和python区别
Python的应用面相对广,跨平台,而且易于上手,代码条理清晰,人工智能,自动化任务,以及Web应用都算是Python一展所长的地方。
VB算是比较老的编程语言,是编译型语言,对Windows的支持比较好。可以开发一些小规模的应用程序,(用过VB的都知道复杂程序一上去,代码就会很乱),还有一种应用叫VBA, 可以在Excel或者Word等软件当中开发自动化脚本,也算是挺有用的。
● Visual Basic.NET是基于微软.NET Framework之上的面向对象的编程语言。
其在调试时是以解释型语言方式运作,而输出为EXE程序时是以编译型语言方式运作。
可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated development environment).SharpDevelop是另一种可用的开源的IDE。
VB.Net需要在.Net Framework平台上才能执行。
● Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
相关推荐:《Python教程》以上就是小编分享的关于vb.net和python区别的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
VB 是Visual Basic编程语言
1991年,美国微软公司推出了Visual Basic(可间称VB),目前的最新版本是.net中文版。
Visual 意即可视的、可见的,指的是开发像windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。
Basic指的是Beginners all_purpose symbolic instruction code 初始者通用符号指令代码语言。
Visual Basic有学习版、专业版和企业版三种版本,以满足不同的开发需要。学习版适用于普通学习者及大多数使用Visual Basic开发一般Windows应用程序的人员;专业版适用于计算机专业开发人员,包括了学习版的全部内容功能以及Internet控件开发工具之类的高级特性;企业版除包含专业版全部的内容外,还有自动化构件管理器等工具,使得专业编程人员能够开发功能强大的组骨子里分布式应用程序。
VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windowsr专业开发工具SDK相媲美。在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(SPI)函数,以用动态链接库(DLL)、对象的链接与世隔嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。随着版本的提高,Visual Basic的功能也越来越强。5.0版以后,Visual Basic推出了中文版,与前个版本相比,其功能有了很大提升。
在二十一世纪初,microsoft公司推出Visual Studio 2003与Visual Basic之间有了重大变化,Visual Studio为各种编程工具做了一个平台,Visual Basic.NET可在这种平台上运行。相对于传统VB,有很大的不同。VB.Net,首次使用.Net构架进行可视化编程,并且能很好地与COM构架兼容。2005年Visual Studio 2005则运用了NET 2.0的技术,更加的方便了程序员的工作。可是新的程序对系统配置要求也较高,需要微软.Net Framework 2.0以上的.Net构架支持。
另外VB还有一个意思
维生素B包括维生素B1、维生素B2、维生素B6、维生素B12、烟酸、泛酸、叶酸等。这些B族维生素是推动体内代谢,把糖、脂肪、蛋白质等转化成热量时不可缺少的物质。如果缺少维生素B,则细胞功能马上降低,引起代谢障碍,这时人体会出现怠滞和食欲不振。相反喝酒过多等导致肝脏损害,在许多场合下是和维生素B缺乏症并行的。
以下是含有丰富维生素B的食品:
①含有丰富维生素B1的食品:小麦胚芽、猪腿肉、大豆、花生、里肌肉、火腿、黑米、鸡肝、胚芽米等。
②含有丰富维生素B2的食品:七腮鳗、牛肝、鸡肝、香菇、小麦胚芽、鸡蛋、奶酪等。
③含有维生素B6、维生素B12、烟酸、泛酸和叶酸等食品: 肝、肉类、牛奶、酵母、鱼、豆类、蛋黄、坚果类、菠菜、奶酪等。其中的维生素B1在人体内无法贮存,所以应每天补充。
B族维生素若想全部摄取比较困难,但是认真选择食物就可以简单且方便的摄取。上述含有维生素B的食物可以分为①和②③两组。看看上述分类就可以明白,②和⑧全都含在大体相同的食物中。因此①作为一组食物,②和③合在一起形成一组食物,组合选择两组食物,基本上可以把B族维生素摄取到手。
1.VB是什么?
VB是visual Basic的简称,即初学者通用符号代码,是很容易入门的语言,从BASIC发展而来。
2.学VB有什么用?
VB是一门编程语言,所以能用VB做的很多很多,基本上除了底层开发(系统软件),VB都能做,而且在数据库应用方面VB也有他独到的一面。
3.如何学好VB(请详细说明)
这不是一句两句可以说清楚的。给你一个学习的过程:
3.1.入门,这段时间你应该学会VB的基本语法,基本语句和基本控件等。能够写一些简单的计算程序就算可以乐。比如写一个解1元2次方程的程序,写一个求解两数的最新公约数的程序等等。
3.2.开始做VB界面的一些东西,了解控件,窗体的使用,事件,方法、过程和函数等。
3.3 开始用类设计VB程序。封装一个VB类。学会VB中类的使用方法。
3.4 学习使用API增强程序的功能。
3.5 这是转入学习C语言,不一定要很强,能懂一些语法就行,当然能够深入的话,就可以转C++乐。
3.6 有乐C的基础,就可以去学习数据结构乐。数据结构很重要,一定要学好。
3.7 开始在VB里面尝试实现数据结构,比如做一个链表,vb没有指针,所以不能向c那样做链表,但我想这时候你应该知道怎么做乐。
3.8 开始尝试做游戏,做不同的程序,做自己想做的东西。
3.9 深入VB。 VB到了这个阶段,深入是很困难的了。需要API的帮助。做一些窗口回调,挂钩等程序。
4.0 你已经有相当的VB经验了,这时候要确定一个方向了,比如游戏编程directx,比如大数据量的数学计算,人工智能等等。。。
4.1 等等等
5.VB可以作什么程序?
VB能做的太多了,除不不能开发ddk程序,不能开发sys,vxd其他的基本都能做。(呵呵,开发OS肯定不行了。) ,而用VB做个图书管理系统,医院管理系统等做毕业设计,是再快速和简便不过的了,功能也可以做的非常强大,现在好多流行软件也用VB开发。当然Delphi也很好使。
VB学习网站太多
如;
中国VB网
打开后下面有友情链接,可以找到更多VB学习网站。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流