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