算法设计与分析实验报告.doc

  • 格式:doc
  • 大小:26.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析实验报告

算法设计与分析报告学生姓名编号专业课指导教师完成时间目录

一.课程内容3

二.算法分析3

1.分治法3(1)分治法的核心思想3(2)最大最小算法分析3

2.动态规划4(1)动态规划的核心思想4(2)矩阵乘法算法分析5

3、贪婪方法5(1)贪婪方法核心思想5(2)背包问题算法分析6(3)装载问题算法分析6

4、回溯法7(1)回溯法核心思想7(2)N皇后问题非递归算法分析7(3)N皇后问题递归算法分析8

三.实施例9的说明

1.最大最小问题9

2.矩阵乘法9

3.背包问题10

4.最佳负载10

5,n皇后问题(非递归)11

6.皇后问题(递归)11

四.经验和体验11

第五,算法对应于示例代码12

1.求最大值和最小值12

2.矩阵乘法问题13

3.背包问题14

4.装载问题17

5,N皇后问题(非递归)18

6.皇后问题(递归)20

一、课程内容

1、分治法,寻找最大值和最小值,最大最小值算法;

2.动态规划、矩阵乘法和求最小乘法数;

3、贪婪方法,1)背包问题,2)装载问题;

4.n皇后问题的回溯法、循环结构算法和递归结构算法。

二、算法分析

1.分而治之(1)当需要解决输入规模为n且n值相当大的问题时,分而治之的核心思想通常很难直接解决

如果问题可以把n个输入分成k个不同的子集,就可以得到k 个不同的独立可解子问题,其中1在包含n个不同元素的集合中同时找到它的最大和最小元素。分而治之战略的设计理念;

如果max1和min1是i1中最大和最小的元素,max2和min2是i2中最大和最小的元素,max1和max2中最大的元素是i1中最大的元素,min1和min2中较小的元素是i1中最小的元素,则将任意实例I=(n,a(1),…,a(n))分成两个实例。核心算法如下:

程序maxmin(i,j,fmax,fmin)全局n,a[1:n]案例{ i=j:

Fmax←fmin←a[i] *只有一个元素* i=j-

一.课程内容3

二.算法分析3

1.分治法3(1)分治法的核心思想3(2)最大最小算法分析3

2.动态规划4(1)动态规划的核心思想4(2)矩阵乘法算法分析5

3、贪婪方法5(1)贪婪方法核心思想5(2)背包问题算法分析6(3)装载问题算法分析6

4、回溯法7(1)回溯法核心思想7(2)N皇后问题非递归算法分析7(3)N皇后问题递归算法分析8

三.实施例9的说明

1.最大最小问题9

2.矩阵乘法9

3.背包问题10

4.最佳负载10

5,n皇后问题(非递归)11

6.皇后问题(递归)11

四.经验和体验11

第五,算法对应于示例代码12

1.求最大值和最小值12

2.矩阵乘法问题13

3.背包问题14

4.装载问题17

5,N皇后问题(非递归)18

6.皇后问题(递归)20

一、课程内容

1、分治法,寻找最大值和最小值,最大最小值算法;

2.动态规划、矩阵乘法和求最小乘法数;

3、贪婪方法,1)背包问题,2)装载问题;

4.n皇后问题的回溯法、循环结构算法和递归结构算法。

二、算法分析

1.分而治之(1)当需要解决输入规模为n且n值相当大的问题时,分而治之的核心思想通常很难直接解决

如果问题可以把n个输入分成k个不同的子集,就可以得到k 个不同的独立可解子问题,其中1在包含n个不同元素的集合中同时找到它的最大和最小元素。分而治之战略的设计理念;

如果max1和min1是i1中最大和最小的元素,max2和min2是i2中最大和最小的元素,max1和max2中最大的元素是i1中最大的元素,min1和min2中较小的元素是i1中最小的元素,则将任意实例I=(n,a(1),…,a(n))分成两个实例。核心算法如下:

程序maxmin(i,j,fmax,fmin)全局n,a[1:n]案例{ i=j:

Fmax←fmin←a[i] *只有一个元素* i=j: ifa [i]

fmin←a[i]否则fmax←a[I];

fmin←a[j]其他:

Mid ←分为两部分*-省略部分-stem . out . println();}打印();它不是最后一列,所以寻找下一列K;x[k]=' 0;'找到的值超出界限,

已退回到前一列k-;判断女王是否与布尔位(intk)='='冲突(intj=' 0);j=5;j)k。j)如果((数学abs(j -数学ABS(x[j]x[k))| |(x[j]='='返回false真实;(int I x[I]=' 0;的公共静态void main(字符串[)参数黄厚='新'皇后1();黄厚.回溯();}}

6.n皇后问题(递归)*回溯n皇后问题,递归算法* class queen private int[]x=' new '[6];count queen()set position(0);Setposition(int n) n表示行n,table[n]表示列数i) i表示放置皇后x[n]=' I;'如果(place(n)='=false ')如果在同一列或对角线上没有皇后(不可能在同一行,因为它是一个接一个放置的,也不可能在右对角线上有皇后,因为每一行都是从左到右放置的),如果(n='=' 5)当棋盘满时输出方案计数;出去。println(‘solution :’);系统输出打印(x[j]1 ' ');} system . out . println(');当一个棋盘未满时,继续放置设定位置(n1);n .如果(x[I]='=x[n]' math . ABS(x[I]x[n])='=' math . ABS(I n))返回1 main(字符串参数[)新皇后(),当放置的皇后在同一列上有一个皇后或在左斜线上有一个皇后;} }单词数据div ≤n,