




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验题目 回溯法 n 皇后问题 班级 信息 112姓名 孙波学号 110111213日期 2014 5 13 一 实验目的 会用回溯法求解 n 皇后问题 通过实验掌握如何使用回溯法求解问题 二 实验要求 用自己熟悉的高级程序设计语言编写程序实现求解 n 皇后问题的回溯算法 使用剪枝函数来避免不必要的搜索 三 源程序 带注释 import java applet Applet import java awt BorderLayout import java awt Color import java awt Container import java awt Graphics import java awt Graphics2D import java awt GridLayout import java awt TextArea import java awt Toolkit import java awt event ActionEvent import java awt event ActionListener import java awt event ItemEvent import java awt event ItemListener import java awt event WindowAdapter import java awt event WindowEvent import java util Hashtable import javax swing BorderFactory import javax swing ButtonGroup import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing JPanel import javax swing JRadioButton import javax swing JScrollPane import javax swing JSlider import javax swing JTextField import javax swing event ChangeEvent import javax swing event ChangeListener public class NQueen implements ItemListener ActionListener ChangeListener JFrame f new JFrame N QUEEN PROBLEM DEMO Container cp f getContentPane int x new int 10 int X new int 10000 10 String str new String 10000 int m 4 a 1 b 1 counter 0 j 1 Panel4 panel4 new Panel4 TextArea t1 new TextArea 30 40 JTextField t2 new JTextField 10 JRadioButton r1 new JRadioButton 4个 JRadioButton r2 new JRadioButton 5个 JRadioButton r3 new JRadioButton 6个 JRadioButton r4 new JRadioButton 7个 JRadioButton r5 new JRadioButton 8个 JButton button1 new JButton 开始演示 JButton button2 new JButton 暂停 JButton button3 new JButton 清空 JSlider slider1 new JSlider 20 100 javax swing Timer timer1 窗口的布局 public NQueen cp setLayout new BorderLayout 20 20 t2 setBorder BorderFactory createTitledBorder 解的个数 JScrollPane scrollPane1 new JScrollPane t1 scrollPane1 setBorder BorderFactory createTitledBorder 展示所有解 JPanel panel1 new JPanel panel1 setLayout new GridLayout 2 1 10 20 JPanel panel2 new JPanel panel2 setLayout new GridLayout 6 1 panel2 setBorder BorderFactory createTitledBorder 请选择 皇后的个数 JPanel panel3 new JPanel panel3 setLayout new GridLayout 4 1 10 10 r1 addItemListener this r2 addItemListener this r3 addItemListener this r4 addItemListener this r5 addItemListener this button1 addActionListener this button2 addActionListener this button3 addActionListener this slider1 setPaintTicks true slider1 setMajorTickSpacing 40 slider1 setMinorTickSpacing 20 slider1 setPaintLabels true slider1 setPaintTrack true slider1 setSnapToTicks true slider1 addChangeListener this slider1 setBorder BorderFactory createTitledBorder 调节 演示的速度 timer1 new javax swing Timer slider1 getValue 25 this Hashtable table new Hashtable table put new Integer 20 new JLabel 快 table put new Integer 100 new JLabel 慢 slider1 setLabelTable table ButtonGroup buttong1 new ButtonGroup buttong1 add r1 buttong1 add r2 buttong1 add r3 buttong1 add r4 buttong1 add r5 panel1 add panel2 panel1 add panel3 panel2 add r1 panel2 add r2 panel2 add r3 panel2 add r4 panel2 add r5 panel2 add t2 panel3 add button1 panel3 add button2 panel3 add button3 panel3 add slider1 cp add panel1 BorderLayout WEST cp add panel4 BorderLayout CENTER cp add scrollPane1 BorderLayout EAST f setSize 865 600 f setVisible true f addWindowListener new WindowAdapter public void windowClosing WindowEvent e System exit 0 N皇后算法 public void nqueen int n int k x 1 0 k 1 for int i 0 i0 while x k n if x k n if k n counter for int i 1 i n i X a i x i str a str a x i a System out print n else k k 1 x k 0 else k k 1 return 判断皇后位置的合法性 public boolean place int b int k b i 1 while i k if x i x k Math abs x i x k Math abs i k return false i i 1 return true 主方法 param args public static void main String args new NQueen TODO Auto generated method stub 画棋盘和皇后的位置 SuppressWarnings serial public class Panel4 extends Applet public void paint Graphics g super paint g Graphics2D g2 Graphics2D g g2 setColor Color white g2 fillRect 0 0 500 600 g setColor Color black for int i 0 i m i g2 drawLine i 240 m 20 20 i 240 m 20 260 g2 drawLine 20 i 240 m 20 260 i 240 m 20 g2 setColor Color blue for int i 1 i m i g2 drawString Q 30 X j i 1 240 m 10 i 240 m 皇后个数的选择 SuppressWarnings static access Override public void itemStateChanged ItemEvent e if e getStateChange e SELECTED if e getSource r1 m 4 a 1 b 1 j 1 counter 0 nqueen m t2 setText counter panel4 repaint System out print m if e getSource r2 m 5 a 1 b 1 j 1 counter 0 nqueen m t2 setText counter panel4 repaint System out print m if e getSource r3 m 6 a 1 b 1 j 1 counter 0 nqueen m t2 setText counter panel4 repaint System out print m if e getSource r4 m 7 a 1 b 1 j 1 counter 0 nqueen m t2 setText counter panel4 repaint System out print m if e getSource r5 m 8 a 1 b 1 j 1 counter 0 nqueen m t2 setText counter panel4 repaint System out print m TODO Auto generated method stub 按钮功能的实现 Override public void actionPerformed ActionEvent e if e getSource button1 j 0 timer1 start Toolkit getDefaultToolkit beep if e getSource button2 timer1 stop Toolkit getDefaultToolkit beep if e getSource button3 timer1 stop t1 setText b 1 Toolkit getDefaultToolkit beep if e ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 帘窗安装合同范本
- 顾客洗纹身合同范本
- 小学生合同范本
- 重大决策事前法律咨询与法律顾问签字背书制度
- 咨询分包合同范本
- 教育教学心得体会(甄选10篇)
- 无人驾驶产业发展趋势展望
- 市场调研协议书格式
- 二次元文化产业市场现状与前景研究
- 2025年大数据营销考试试题题库及答案
- 女性肿瘤患者的生育力保存
- 2024版体育赛事赞助对赌协议合同范本3篇
- 环卫公司培训课件
- 仓库年度评审报告范文
- 《工会财务与会计》课件
- 工商银行-(招聘笔试题)
- 物业保洁员礼节礼貌培训
- 八年级物理上册课程纲要
- 普外科出院患者随访制度
- 第二单元 观察物体(单元测试)-2024-2025学年三年级上册数学北师大版
- DB65-T 4773-2024 生物安全实验室消毒技术指南
评论
0/150
提交评论