算法分析与设计实验报告 本文关键词:算法,实验,报告,分析,设计
算法分析与设计实验报告 本文简介:安徽工业大学专业:班级:姓名:学号:实验一:回溯法完成0-1背包问题代码如下:#include“stdafx.h“#include#include#include#includeusingnamespacestd;templateclassKnap{public:friendvoidInit();f
算法分析与设计实验报告 本文内容:
安
徽
工
业
大
学
专
业:
班
级:
姓
名:
学
号:
实验一:回溯法完成0-1背包问题
代码如下:
#include
“stdafx.h“#include
#include
#include
#include
using
namespace
std;
template
class
Knap
{
public:
friend
void
Init();
friend
void
Knapsack();
friend
void
Backtrack(int
i);
friend
float
Bound(int
i);
bool
operator
a)const
{
if(fl
void
Sort(Knapli,int
n)
{
int
i,j,k;
Knap
minl;
for(i=1;ibag=NULL;
int
cp=0,cw=0;
int
bestp=0;
}
using
namespace
jie;
void
Init()
{
int
i=0;
cout>n;
cout>c;
cout
[n];
x=new
int[n];
cout>bag[i].w;
cout>bag[i].v;
for(i=0;i=n)
//到达叶节点
{
bestp=cp;
//更新最优价值
return;
}
if(cw+bag[i].wbestp)//进入右子树
{
bag[i].flag=0;
Backtrack(i+1);
}
}
//计算当前节点处的上界
float
Bound(int
i)
{
int
cleft
=
c-cw;
//剩余容量
float
b
=
cp;
while
(i
#include
#include
void
MergeSort(intdata,int
x,int
y,inttemp)
{
int
p,q,m,i=x;
if
(y-x>1)
{
m
=
x+(y-x)/2;
p
=
x;
q
=
m;
MergeSort(data,x,m,temp);
MergeSort(data,m,y,temp);
while(p=y||(pp
if
(q>p)
{
temp
=
data[p],data[p]
=
data[q],data[q]
=temp;
p++;
}
while(q>p
}
for
(int
n=0;
n n++) { print_spack(3*(row-n),1);//后面第二个参数传了一个非零参数,是因为告诉函数要直接输出3*(row-n)个空格 for (int m=0; m<=n; m++)//输出中间元素 { printf(“%d“,t = Try(n,m));//递归调用获得当前第n行,第m个元素的值,输出同时赋值给t print_spack(t);//这儿没有传第二个参数是告诉函数,需要判断t参数的位数来决定输出的空格 } printf(“/n“);//每行结束后打印一个回车 } } void main() { int x = 0; while (true) { printf(“/n递归实现杨辉三角!/n本程序不能大于20行。/n请输入杨辉三角的行数:(输入-1结束程序)“); scanf(“%d“,//输入行数 if (x==-1) { exit(0); } system(“cls“); scan(x);//扫描输出 } } 运行结果: 篇2:信息技术课程中算法一课的教学设计 信息技术课程中算法一课的教学设计 本文关键词:教学设计,算法,一课,信息技术课程 信息技术课程中算法一课的教学设计 本文简介:信息技术课程中算法一课的教学设计新的《中小学信息技术课程指导纲要》对高中信息技术课程中程序设计方法的学习提出了更高的要求,其中关于算法的要求也更多了。如何让学生更容易地理解算法的概念,如何让学生尽快掌握算法的设计、算法的选择及应用,为程序设计打好基础,都将成为程序设计教学中的重要内容。然而,因为算法 信息技术课程中算法一课的教学设计 本文内容: 信息技术课程中算法一课的教学设计 新的《中小学信息技术课程指导纲要》对高中信息技术课程中程序设计方法的学习提出了更高的要求,其中关于算法的要求也更多了。如何让学生更容易地理解算法的概念,如何让学生尽快掌握算法的设计、算法的选择及应用,为程序设计打好基础,都将成为程序设计教学中的重要内容。然而,因为算法的理论太过抽象,所以教学过程往往难以把握。下面,以个人的观点简单介绍一下怎样针对学生的心理特点、结合学生的生活实际设计这堂课。 一、教学方法 以课堂讨论的方式,引导学生针对趣味性问题和生活实际中会遇到的问题进行思考、讨论,探索解决问题的方法和步骤,从中得出关于算法的诸多概念。所有内容都以学生独立思考和分组讨论的方式进行,充分调动学生的主观能动性,以达到主动式学习、探究学习和创新性学习。 二、教学内容 1.算法的概念 2.算法的描述 3.算法的择优 三、教学过程 1. 算法的概念 (1)放幻灯片,出示一个趣味数学题:两个大人和两个小孩一起渡河,渡口只有一条小船,一次只能渡过一个大人或两个小孩,他们四人都会划船,但都不会游泳。 (2)(教师问)同学们现在想一想,他们怎样渡过河去?请写一写你的渡河方案。 (3)(三分钟后,教师问)有谁设计好了方案? (4)学生回答。 (5)放幻灯片,出示方案如下: 渡河的方法与步骤: 第一步:两个小孩同船渡过河去; 第二步:一个小孩划船回来; 第三步:一个大人独自划船渡过河去; 第四步:对岸的小孩划船回来; 第四步:两个小孩再同船渡过河去; 第五步:一个小孩划船回来; 第六步:余下的一个大人独自划船渡过河去; 第七步:对岸的小孩划船回来; 第八步:两个小孩再同船渡过河去。 (6)总结出算法的概念:算法是解决问题的方法和步骤。 2.算法的设计与描述 (1)(教师)如何去设计算法呢?设计的算法又怎么表示呢?大家看到了,算法的设计分两个内容:一是寻找一种方法;二是描述一下实现这个方法的步骤。刚才我们已经用语言的形式描述过渡河的算法了。 (2)放幻灯片,出示算法的框图描述元素(图1)。 图1 (3)放幻灯片,并简单分析求一元二次方程(其中a≠0)实数解的算法框图(图2)。 图2 3.算法的择优 (1)(教师)处理同一个问题可能有不同的算法,采用什么样的算法更简单、方便呢? (2)放幻灯片,出示例子:著名数学家华罗庚“烧水泡茶”的两个算法。 算法一 第一步:烧水; 第二步:水烧开后,洗刷茶具; 第三步:沏茶。 算法二 第一步:烧水; 第二步:烧水过程中,洗刷茶具; 第三步:水烧开后沏茶。 (3)(教师)大家讲讨论一下这两个算法的区别在哪里? (4)(学生)区别是在什么时间洗刷茶具。 (5)(教师)大家讲一下,哪个算法更高效?为什么? (6)(学生)第二个算法更高效。因为节约时间。 (7)(教师)很好。第二个算法的科学性在于应用了“统筹方法”。因此,我们可以明白一个好算法必须用到科学的方法。我们应该好好学习各学科处理问题的科学方法。 四、检测与练习 1.对个体的检测 题目:如果你要外出购物,需要到菜市场买肉、菜,到超级市场采购副食品,到服装店买衣服。 提问学生一:请你讲一个购物的算法(先买什么,后买什么)。 提问学生二:请你讲一个不同的算法。 提问学生三:请你再讲一个与这两位同学不同的算法。 提问学生四:你讲一讲他们三人所讲的算法,谁的更好?为什么? 2.对群体的检测 题目:一个人带三只老虎和三头牛过河。只有一条船,同船可以容一个人和两只动物。没有人在的时候,如果老虎的数量不少于牛的数量就会吃掉牛。设计安全渡河的算法。 (1)四人一组,集体讨论,分工设计。 (2)写出文字描述。 3.练习 画出一元二次方程(其中可能为0)求解的算法框图。(要求给出所有的解,包括虚数解) 五、授课总结 1.调动了学生主动探索学习的积极性 2.达到了素质教育的基本要求 3.学生认知情况 (1)掌握算法概念的有80%以上。 (2)掌握算法设计思路的达100%。 (3)掌握框图画法的达70%以上。 (4)理解算法的合理、科学性的重要性的达100%。 篇3:高中信息技术课程中算法一课的教学设计 高中信息技术课程中算法一课的教学设计 本文关键词:信息技术,教学设计,算法,一课,高中 高中信息技术课程中算法一课的教学设计 本文简介:高中信息技术课程中算法一课的教学设计新的《中小学信息技术课程指导纲要》对高中信息技术课程中程序设计方法的学习提出了更高的要求,其中关于算法的要求也更多了。如何让学生更容易地理解算法的概念,如何让学生尽快掌握算法的设计、算法的选择及应用,为程序设计打好基础,都将成为程序设计教学中的重要内容。然而,因为 高中信息技术课程中算法一课的教学设计 本文内容: 高中信息技术课程中算法一课的教学设计 新的《中小学信息技术课程指导纲要》对高中信息技术课程中程序设计方法的学习提出了更高的要求,其中关于算法的要求也更多了。如何让学生更容易地理解算法的概念,如何让学生尽快掌握算法的设计、算法的选择及应用,为程序设计打好基础,都将成为程序设计教学中的重要内容。然而,因为算法的理论太过抽象,所以教学过程往往难以把握。下面,以个人的观点简单介绍一下怎样针对学生的心理特点、结合学生的生活实际设计这堂课。 一、教学方法 以课堂讨论的方式,引导学生针对趣味性问题和生活实际中会遇到的问题进行思考、讨论,探索解决问题的方法和步骤,从中得出关于算法的诸多概念。所有内容都以学生独立思考和分组讨论的方式进行,充分调动学生的主观能动性,以达到主动式学习、探究学习和创新性学习。 二、教学内容 1.算法的概念 2.算法的描述 3.算法的择优 三、教学过程 1. 算法的概念 (1)放幻灯片,出示一个趣味数学题:两个大人和两个小孩一起渡河,渡口只有一条小船,一次只能渡过一个大人或两个小孩,他们四人都会划船,但都不会游泳。 (2)(教师问)同学们现在想一想,他们怎样渡过河去?请写一写你的渡河方案。 (3)(三分钟后,教师问)有谁设计好了方案? (4)学生回答。 (5)放幻灯片,出示方案如下: 渡河的方法与步骤: 第一步:两个小孩同船渡过河去; 第二步:一个小孩划船回来; 第三步:一个大人独自划船渡过河去; 第四步:对岸的小孩划船回来; 第四步:两个小孩再同船渡过河去; 第五步:一个小孩划船回来; 第六步:余下的一个大人独自划船渡过河去; 第七步:对岸的小孩划船回来; 第八步:两个小孩再同船渡过河去。 (6)总结出算法的概念:算法是解决问题的方法和步骤。 2.算法的设计与描述 (1)(教师)如何去设计算法呢?设计的算法又怎么表示呢?大家看到了,算法的设计分两个内容:一是寻找一种方法;二是描述一下实现这个方法的步骤。刚才我们已经用语言的形式描述过渡河的算法了。 (2)放幻灯片,出示算法的框图描述元素(图1)。 图1 (3)放幻灯片,并简单分析求一元二次方程(其中a≠0)实数解的算法框图(图2)。 图2 3.算法的择优 (1)(教师)处理同一个问题可能有不同的算法,采用什么样的算法更简单、方便呢? (2)放幻灯片,出示例子:著名数学家华罗庚“烧水泡茶”的两个算法。 算法一 第一步:烧水; 第二步:水烧开后,洗刷茶具; 第三步:沏茶。 算法二 第一步:烧水; 第二步:烧水过程中,洗刷茶具; 第三步:水烧开后沏茶。 (3)(教师)大家讲讨论一下这两个算法的区别在哪里? (4)(学生)区别是在什么时间洗刷茶具。 (5)(教师)大家讲一下,哪个算法更高效?为什么? (6)(学生)第二个算法更高效。因为节约时间。 (7)(教师)很好。第二个算法的科学性在于应用了“统筹方法”。因此,我们可以明白一个好算法必须用到科学的方法。我们应该好好学习各学科处理问题的科学方法。 四、检测与练习 1.对个体的检测 题目:如果你要外出购物,需要到菜市场买肉、菜,到超级市场采购副食品,到服装店买衣服。 提问学生一:请你讲一个购物的算法(先买什么,后买什么)。 提问学生二:请你讲一个不同的算法。 提问学生三:请你再讲一个与这两位同学不同的算法。 提问学生四:你讲一讲他们三人所讲的算法,谁的更好?为什么? 2.对群体的检测 题目:一个人带三只老虎和三头牛过河。只有一条船,同船可以容一个人和两只动物。没有人在的时候,如果老虎的数量不少于牛的数量就会吃掉牛。设计安全渡河的算法。 (1)四人一组,集体讨论,分工设计。 (2)写出文字描述。 3.练习 画出一元二次方程(其中可能为0)求解的算法框图。(要求给出所有的解,包括虚数解) 五、授课总结 1.调动了学生主动探索学习的积极性 2.达到了素质教育的基本要求 3.学生认知情况 (1)掌握算法概念的有80%以上。 (2)掌握算法设计思路的达100%。 (3)掌握框图画法的达70%以上。 (4)理解算法的合理、科学性的重要性的达100%。