算法分析与设计实验报告

算法分析与设计实验报告 本文关键词:算法,实验,报告,分析,设计

算法分析与设计实验报告 本文简介:安徽工业大学专业:班级:姓名:学号:实验一:回溯法完成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%。