算法复习材料

时间:2019-05-14 11:09:07下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《算法复习材料》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《算法复习材料》。

第一篇:算法复习材料

1.假票统计

问题描述:

由于你们团队在国际大学生诗歌大赛上取得的巨大成就,你们学校决定为你们召开一次庆功鸡尾酒会,到来的人数大大超出了预期。然而庆功会的主管却抱怨发现了有人使用假票,实际的门票是从1到N(N <= 10000),主管怀疑有人采用复印、打印等手段伪造了门票。他把所有收上来的门票拿给你,要求你编写程序,统计所有门票中存在假票的门票数。输入:

输入文件中包含多组测试数据,每组测试数据占两行。第1行包括两个整数N和M,分别表示门票的初始总张数和参加晚会的总人数(1 <= N <= 10000,1 <= M <= 20000)。第2行为M个整数Ti,表示收到的M张门票的号码(1 <= Ti <= N)。输入文件最后一行为0 0,表示输入结束。输出:

对每组输入测试数据,输出一个整数,占一行,表示收上来的门票中共有多少张票被伪造过。输入样例: 5 5 3 3 1 2 4 6 10 6 1 3 6 6 4 2 3 1 2 0 0 输出样例: 1 4

参考代码:

//计算有几个号码被复制过 #include #include #define N 10010 #define M 20010 intcnt[N];//cnt[i],i出现的次数 int main(){ int n, m,t;while(scanf(“%d%d”, &n, &m), n + m){ memset(cnt, 0, sizeof(cnt));int i, j, res = 0;for(i = 0;i < m;i++){ scanf(“%d”, &t);cnt[t]++;} for(i = 1;i <= n;i++){ if(cnt[i] > 1){ res ++;} } printf(“%dn”, res);} return 0;}

2.看和说

问题描述:

看和说的顺序定义如下:任何一个字符串都是以数字开头,每个随后的元素都是被前一个元素重新定义。例如,字符串“122344111”可以被描述为“1个1,两个2,1个3,2个4和3个1”。因此,122344111以序列的形式表示出来就是1122132431。同理,101就表示1111111111。输入:

输入包括测试数据的组数,然后依次为相应的测试数据,每个数据占一行,不会超过1000位。输出: 对于每个测试数据,输出对应的字符串。

输入样例: 3 122344111 1111111111 12345 输出样例: 1122132431 101 1112131415 参考代码:

#include #include int main(){ char s[1001];intn,i,num,len;scanf(“%dn”,&n);while(n--){

num=1;

gets(s);

len=strlen(s);

for(i=0;i

{

if(s[i]!=s[i+1])

{

printf(“%d%c”,num,s[i]);

num=1;

}

else

num++;

}

printf(“n”);} return 0;}

3.二进制转化为十六进制

问题描述:

输入一个2进制的数,要求输出该2进制数的16进制表示。在16进制的表示中,A-F表示10-15 输入:

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000。输出:

n行,每行输出对应一个输入。输入样例: 100000 111 输出样例: 7

参考代码1:

#include #include int main(){

inti,n,dec,len;

char bin[10001];

scanf(“%d”,&n);

while(n--)

{

scanf(“%s”,bin);

len=strlen(bin);//求二进制数的长度

dec=4-len%4;

if(len%4)//处理头几位,后移dec位,使得变成4的整数倍,前面补0

{

for(i=len;i>=0;i--)

bin[i+dec]=bin[i];

for(i=0;i

bin[i]='0';

len+=dec;

}

for(i=0;i

printf(“%X”,(bin[i+3]-'0')+(bin[i+2]-'0')*2+(bin[i+1]-'0')*4+(bin[i]-'0')*8);

printf(“n”);

}

return 0;}

//参考代码2:

#include #include #define maxn 10006

int main(){ int i, j, t, tp, p;charstr[maxn], str_rev[maxn];char res[maxn/4], tmp[6], tmp_rev[6];while(scanf(“%d”, &t)!=EOF){ while(t--){ p = 0;scanf(“%s”, &str);intlen = strlen(str);for(i = lenii;strncpy(tmp, str_rev + i, k);for(j = kj-1] = tmp[j];sscanf(tmp_rev, “%d”, &tp);//printf(“k = %d tp = %d tmp = %s tmp_rev = %sn”, k, tp, tmp, tmp_rev);switch(tp){ case 0: res[p++] = '0';break;case 1: res[p++] = '1';break;case 10: res[p++] = '2';break;case 11: res[p++] = '3';break;case 100: res[p++] = '4';break;case 101: res[p++] = '5';break;case 110: res[p++] = '6';break;case 111: res[p++] = '7';break;case 1000: res[p++] = '8';break;case 1001: res[p++] = '9';break;case 1010: res[p++] = 'A';break;case 1011: res[p++] = 'B';break;case 1100: res[p++] = 'C';break;case 1101: res[p++] = 'D';break;case 1110: res[p++] = 'E';break;case 1111: res[p++] = 'F';break;default: break;} i += 4;

} for(i = p-1;i >= 0;i--)printf(“%c”, res[i]);printf(“n”);} } return 0;}

第二篇:2011会考总复习算法操作题(答案)

上海市甘泉外国语中学2011届高一信息科技会考总复习算法操作题答案 高一信息科技总复习——算法之程序设计操作题答案

〖周末卷(3)_算法〗

28.请编程求解分段函数的值:



2x10x10

y100x10x10

x10

2x10

Dim x As Single

Dim y As Single

x = InputBox(“请输入x:”)

If(x <-10)Or(x > 10)Then

y =-3.14 / 2 * x + 10

Else

y = 100 + x

End If

Print y

29.请设计算法,找出小于2345的最大质数。

Dim i As Integer'变量i 待检验的数

Dim j As Integer'变量j 检验i是否素数的除数

Dim t As Integer'变量t 记录i被整除的次数

For i = 2345 To 2 Step-1

t = 0

For j = 2 To i复习资料之系列四

46.高一某社团学生暑假里外出活动,需要准备一些1元、5角、1角的硬币。若要将

50元纸币全部兑换成1元、5角、1角硬币,要求每种硬币不能为0个,共有多少种不同的兑换方法?请编写程序,统计兑换方案的个数。

(1)用自然语言描述此题的算法思想:

用枚举算法,用循环结构列举范围„„,用分支结构检验,条件为„„,找出所有符合条件的数后,输出„„

用枚举算法,用循环结构列举范围1元硬币个数1~49,5角硬币个数1~99,1角硬币个数1~499,用分支结构检验,条件为10 * a + 5 * b + c = 500,找出所有符合条件的数并统计符合条件的方案个数后输出。

2401(2)兑换方案的个数为:________________________

Dim a As Integer'变量a一元硬币的个数

Dim b As Integer'变量b五角硬币的个数

Dim c As Integer'变量c一角硬币的个数

Dim t As Integer'变量t兑换方案的个数

t = 0

a = 1

Do While a <= 49

For b = 1 To 99

For c = 1 To 499

If 10 * a + 5 * b + c = 500 Then

t = t + 1

End If

Next c

Next b

a = a + 1

Loop

Print t

46.求1,1,2,3,5,8„„中,刚好大于500的项是第几项。

(1)用自然语言描述找出恰好大于500那个项数的方法:

用循环结构,循环条件即项数值c<=500,设三个变量a、b、c分别记录该数列的第n-

2、n-

1、和n项,当c大于500时退出循环,并输出c的值。(2)计算结果:________________________

Dim a As Integer'变量a第n-2项

Dim b As Integer'变量b

Dim c As Integer'变量c

Dim n As Integer'变量n

a = 1

b = 1

c = 0

n = 2

Do While c <= 500

n = n + 1

c = a + b

a = b

b = c

Loop

Print n

第n-1项 第n项 项数

46.所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经非常近,就

象孪生兄弟一样。最小的一对孪生素数是(3, 5)。请编写程序,求出100以内孪生素数的对数。

(1)请用自然语言描述判断一对孪生素数的方法:

用枚举算法检验出素数,设两个变量a、b别记录孪生素数中的较小、较大数,用分支结构判断 b1

If i Mod j = 0 Then

t = t + 1

End If

Next j

If t = 0 Then

a = b

b = i

If ba <= 6 And c1

If i Mod j = 0 Then

t = t + 1

End If

Next j

If t = 0 Then

a = b

b = c

c = i

If ca >= 3 Then

Print a;b;c

n = n + 1

End If

End If

Next i

Print n

46.众所周知,素数是非常孤独的数字,因为它只有1和它本身两个数字,不过有一种

数比素数也好不到哪里去,它们除了1和它本身之外,只有一个因数,我们暂且称它们为“次孤独数”。

(1)请用自然语言描述如何判断一个数是否为“次孤独数”:

用双重循环结构的试除法判断,外循环条件为数字i在1~1000范围内取值,内循环条件是2~该数字减1,循环体用单分支结构判断i被整除的次数,若次数等于1,则可判定此数为“次孤独数”。(2)求出1~1000之间这样的“次孤独数”并统计出个数:_____________________

程序代码:

Dim i As Integer'变量i 待检验的数

Dim j As Integer'变量j 检验i是否为次孤独数的除数

Dim t As Integer'变量t 记录i被整除的次数

Dim n As Integer'变量n 记录次孤独数的个数

n = 0

For i = 1 To 1000

t = 0

For j = 2 To i-1

If i Mod j = 0 Then

t = t + 1

End If

Next j

If t = 1 Then

Print i

n = n + 1

End If

Next i

Print “n=”;n

第三篇:算法与程序设计学业水平考试复习[定稿]

学业水平考试复习博观而约取,厚积而薄发 算法选择题部分(算法选择题部分(共 35 题)

1、下列哪一个不是用于程序设计的软件()。A、BASIC B、C 语言 C、Word D、Pascal [答案] C

2、程序设计语言的发展阶段不包括()。A、自然语言 B、机器语言 C、汇编语言 D、高级语言 [答案]A [解析]自然语言可描述算法,不是程序设计语言。

3、在现实生活中,人工解题的过程一般分为()。A、理解分析问题->寻找解题方法->用工具计算->验证结果 B、寻找解题方法->理解分析问题->用工具计算->验证结果 C、用工具计算->验证结果->寻找解题方法->理解分析问题 D、用工具计算->验证结果->理解分析问题->寻找解题方法 [答案] A

4、下列关于算法的特征描述不正确的是()。A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须有确切的定义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 [答案] C [解析]算法是描述问题解决的步骤或方法,可用自然语言、伪代码、流程图等表示。算 法的基本特征由有穷性、确切性、输入、输出、可行性。

5、下列不属于算法基本特征的是()。A、可执行性 B、确定性 C、有穷性 D、无限性 [答案] D

6、以下描述中最适合用计算机编程来处理的问题是()。A、确定放学回家的路线 B、计算某个同学其中考试各科成绩总分 C、计算 100 以内的奇数平方和 D、在因特网上查找自己喜欢的歌曲 [答案] C [解析] 适合用计算机编程来处理的问题特征:烦琐但有一定的规律可利用。

7、下面不属于算法描述方式的是()。A、自然语言 B、伪代码 C、流程图 D、机器语言 [答案] D

8、流程图是描述()的常用方式()。A、程序 B、算法 C、数据结构 D、计算规则 [答案] B

9、流程图中表示判断框的是()。A、矩形框 B、菱形框 C、圆形框 D、椭圆形框 [答案] B [解析] 椭圆形框表示开始、结束;平行四边形表示输入、输出;矩形表示处理; 菱形表示判断;箭头表示流程(流向);圆形表示连接点。

10、下列可以作为合法变量名的是()。A、a-3 B、7a C、a$ D、text2 [答案] D [解析]合法变量名可由字母、数字和下划线组成,以字母开头。

11、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构()。A、顺序结构 B、输入、输出结构 C、选择结构 D、循环结构 [答案] B 学业水平考试复习博观而约取,厚积而薄发

12、以下属于程序的基本控制结构的是()。A、星型结构 B、选择结构 C、网络结构 D、平行结构 [答案] B

13、VB 语言中,下列各种基本数据类型说明符中表示整型数的是()。A、Boolean B、Integer C、Single D、String [答案] B [解析]Boolean:逻辑型;Single:单精度浮点型数据;String:字符串类型。

14、在程序设计过程中,使用字符串运算符“+”,可以将几个字符串合并成一个字符串, 如:“ab”+“cd”的运算结果是“abcd”,那么“27”+“23”的运算结果是()。A、“50” B、“2723” C、“27+23” D、FALSE [答案] B [解析]字符串合并运算。

15、下列选项中不是字符串常量的是()。A、“ab” B、“你好” C、“2006” D、1235 [答案] D [解析]双引号引起来的字符是字符串常量。

16、以下运算符中运算优先级最高的是()。A、+ B、C、>= D、* [答案] D [解析] vb 中运算符优先级 算术>字符串连接运算符>比较>逻辑,还有从左到右。例如:6+5*4=?

17、穷举法的适用范围是()。A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法 [答案] C [解析] 穷举法就是把所有的情况全都列举出来,一一尝试是否合适。

18、下列可以作为合法变量名的是()。A、a7 B、7a C、a-3 D、8 [答案] A

19、下面属于逻辑运算符的是()。A、or B、FALSE C、TRUE D、<> [答案] A [ 解析]Not、And、Or

20、模块化程序设计方法反映了结构化程序设计思想的()基本思想。()。A、自顶而下、逐步求精 B、面向对象 C、自定义函数、过程 D、可视化编程 [答案] A

21、下列程序执行后 A、B 的值是 A=30 B=40 A=A+B:B=A-B:A=A-B“()。A、30、40 B、40、40 C、40、30 D、30、30 [答案] C [ 解析] “:”冒号的意思是“一行可书写几句语句”

22、执行下列程序段后,变量 X 的值为 x=3:y=77 Do while x

23、要实现变量 M 的值与变量 N 的值进行交换,可用语句()。A、X=M:M=N:N=X B、M=N:N=M C、M=N D、N=M [答案] A

24、已知变量 x 和 y 的值分别是 6 和 5,那么以下运算结果为 True 的表达式是(A、Not(x>y)B、(x<5)or(y>6)C、(x>=6)And(y>=5)D、Not(x>4)[答案]C [解析] vb 中运算符优先级算术>比较>逻辑,还有从左到右。

25、以下程序段运行时语句 k=k+1 执行的次数为()次.K=-10 do k=k+1 loop while k=0()。A、11 B、无数次 C、9 D、10 [答案] [解析]没有正确答案,只执行一次。

26、编程求 1+2+3+……+1000 的和.该题设计最适合使用的控制结构为 A、顺序结构 B、分支结构 C、循环结构 D、选择结构 [答案] C [解析])。()。Dim sum as integer For i=1 to 1000 Sum=sum+i Next i Print sum

27、结构化程序设计由顺序结构,选择结构和循环结构三种基本结构组成,其中某程序中 三个连续语句如下: a=1 b=2 c=b+a 它属于()。A、顺序结构 B、选择结构 C、循环结构 D、以上都不是 [答案]

28、下列程序段中,循环体执行的次数是()。y=2 Do While y<=8 y=y+y Loop()。A、2 B、16 C、4 D、3 [答案] D [解析]程序运行完毕之后,变量 y 的值是 16。

29、下列程序运行后,变量 Value 的值是()。X=20 if x>=10 then Value=5*x Else Value=4*x()。A、100 B、80 C、40 D、20 [答案] A

30、下列程序执行后 A、B 的值是 A=5 B=6 A=A+B:B=A-B:A=A-B()。A、5、6 B、6、6 C、6、5 D、5、5 [答案] C

31、在 VB 程序设计中交换变量 x 和 y 的值,就使用的赋值语句组是()。A、t=x:y=x:y=t B、x=y:y=t:t=x C、x=y:y=x D、t=x:x=y:y=t [答案] D

32、如果 X=-25,则运行 x=Abs(x);x=sqr(x)后,x 的值是()。A、5 B、-5 C、25 D、-25 [答案] A [解析]函数 abs()求绝对值;sqr()求算术平方根。

33、由语句:Dim K(11)As Long,判断下列结论中错误的是()。A、语句定义了数组 K,它的下标从 0 到 11 B、数组 K 共有 12 个分量 C、数组 K 的各个分量都是长整型数 D、数组 K 的各个分量的值将从小到大的顺序自动排列 [答案] D [解析]K(0)、K(1)、……K(11)共 12 个。

34、下面是用 VB 编写的求 1+1/2+1/3+……+1/100 和的程序,该程序循环终止时 i 的值是 多少? Private Sub Form_Activate()Dim i As Integer, sum As Integer sum = 0 For i = 1 To 100 sum = sum + 1 / i Next i End Sub()。A、i=102 B、i=100 C、i=101 D、无法判断 [答案] C

35、下列程序段运行后,变量 max 的值为()a=5 b=10 max=a IF b>max Then max=b()A、5 B、10 C、5 和 10 D、以上三项都不是 [答案] B

第四篇:《运算定律和简便算法整理和复习》教学设计

《运算定律和简便算法整理和复习》教学设计

兴隆小学 宋绍杰

一、教学目标:

1.引导学生通过整理理解和掌握相关的运算定律和性质,能正确联系与区别。2.能根据算式的特点,比较熟练的运用运算定律和性质使计算简便,深入体会简便计算的简便性和优越性。

3.培养学生合理、灵活地进行运算的能力,进一步提高学生的分析、判断以及有序思考的能力。

4.根据本单元出现的问题,对学生进行针对性的讲解,培养学生认真审题、书写,仔细计算的好习惯。

教学重点:合理、灵活运用运算定律和性质进行简便计算。教学难点:根据算式的特点灵活计算。

二、教学过程:

1、导入

你会用4、75、25这三个数设计一道可以简便计算的题目?(课件出示)

2、整理知识

这些题你准备怎么计算?为什么这样算?你这样算的依据是什么?学生分别说出每题的解题方法与依据,老师分别将准备的运算定律卡片贴在黑板上。

3、归纳分类

(1)怎样把零散的知识整理的有条有理,便于我们整理和运用呢?(小组讨论)在整理过程中,我们还要注意着两点:(课件出示)①小组内分工合作,一人负责记录,其他同学积极参与; ②整理是做到内容全面,调理清晰; ③小组长对本组成员进行评价。

同学们按照你们的想法开始整理,比一比,看哪个小组整理额最全面,调理最清晰。(2)小组汇报

让学生上讲台展示小组研究成果,为什么这样整理?(展台展示)(3-4组)以上用时大概20分钟。

三、分层练习:

1、基础练习(1)填空 45×32=32×□ 327+68+32=327+(□+□)

25×(40+4)=25×□()□×□

(2)怎么简便就怎么算(不用计算出结果,只写出简算的过程)25×19×4=()73×48+73×52=()(3)判断 12×97+3 =12×(97+3)=12×100 =1200()125×25×32 =125×25×4×8 =125×8+25×4 =1000+100 =1100()

2、变式练习125×88 136×101-136

3、拓展练习3200÷25÷4 136-25+75

四、全堂总结:

1、说说你们今天都有什么收获?

2、小结:在计算时,我们要看清楚试题数据的特点,运算符号的特点,再去想我们可以用什么方法来做;接着我们就做认真的计算;做完题目的时候还要检查。板书:看——想——变——算——查。

相信你们在以后的计算中,能根据算式的特点能合理、灵活地运用运算定律进行简便计算。

第五篇:算法总结

算法分析与设计总结报告

71110415 钱玉明

在计算机软件专业中,算法分析与设计是一门非常重要的课程,很多人为它如痴如醉。很多问题的解决,程序的编写都要依赖它,在软件还是面向过程的阶段,就有程序=算法+数据结构这个公式。算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。作为IT行业学生,学习算法无疑会增强自己的竞争力,修炼自己的“内功”。

下面我将谈谈我对这门课程的心得与体会。

一、数学是算法的基础

经过这门课的学习,我深刻的领悟到数学是一切算法分析与设计的基础。这门课的很多时间多花在了数学公式定理的引入和证明上。虽然很枯燥,但是有必不可少。我们可以清晰的看到好多算法思路是从这些公式定理中得出来的,尤其是算法性能的分析更是与数学息息相关。其中有几个定理令我印象深刻。

①主定理

本门课中它主要应用在分治法性能分析上。例如:T(n)=a*T(n/b)+f(n),它可以看作一个大问题分解为a个子问题,其中子问题的规模为b。而f(n)可看作这些子问题的组合时的消耗。这些可以利用主定理的相关结论进行分析处理。当f(n)量级高于nlogba时,我们可以设法降低子问题组合时的消耗来提高性能。反之我们可以降低nlogba的消耗,即可以扩大问题的规模或者减小子问题的个数。因此主定理可以帮助我们清晰的分析出算法的性能以及如何进行有效的改进。

②随机算法中的许多定理的运用

在这门课中,我学到了以前从未遇见过的随机算法,它给予我很大的启示。随机算法不随机,它可通过多次的尝试来降低它的错误率以至于可以忽略不计。这些都不是空穴来风,它是建立在严格的定理的证明上。如素数判定定理是个很明显的例子。它运用了包括费马小定理在内的各种定理。将这些定理进行有效的组合利用,才得出行之有效的素数判定的定理。尤其是对寻找证据数算法的改进的依据,也是建立在3个定理上。还有检查字符串是否匹配也是运用了许多定理:指纹的运用,理论出错率的计算,算法性能的评价也都是建立在数学定理的运用上。

这些算法都给予了我很大启发,要想学好算法,学好数学是必不可少的。没有深厚的数学功力作为地基,即使再漂亮的算法框架,代码实现也只能是根底浅的墙上芦苇。

二、算法的核心是思想

我们学习这门课不是仅仅掌握那几个经典算法例子,更重要的是为了学习蕴含在其中的思想方法。为什么呢?举个例子。有同学曾问我这样一个问题:1000只瓶子装满水,但有一瓶有毒,且毒发期为1个星期。现在用10只老鼠在一个星期内判断那只瓶子有毒,每只老鼠可以喝多个瓶子的水,每个瓶子可以只喝一点。问如何解决?其实一开始我也一头雾水,但是他提醒我跟计算机领域相关,我就立马有了思路,运用二进制。因为计算机的最基本思想就是二进制。所以说,我们不仅要学习算法,更得学习思想方法。

①算法最基本的设计方法包括分治法,动态规划法,贪心法,周游法,回溯法,分支定界法。我们可利用分治法做快速排序,降低找n个元素中最大元和最小元的量级,降低n位二进制x和y相乘的量级,做Strassen矩阵乘法等等。它的思想就是规模很大的问题分解为规模较小的独立的子问题,关键是子问题要与原问题同类,可以采取平衡法来提高性能。

动态规划法是把大问题分解为子问题,但是子问题是重复的,后面的问题可以利用前面解决过的问题的结果。如构造最优二叉查找树,解决矩阵连乘时最小计算次数问题,寻找最长公共子序列等等。

贪心法就是局部最优法,先使局部最优,再依次构造出更大的局部直至整体。如Kruscal最小生成树算法,求哈夫曼编码问题。

周游法就是简单理解就是采取一定的策略遍历图中所有的点,典型的应用就是图中的深度优先搜索(DFS)和广度优先搜索(BFS)。

回溯法就是就是在满足一定的条件后就往前走,当走到某步时,发现不满足条件就退回一步重新选择新的路线。典型的应用就是8皇后问题,平面点集的凸包问题和0-1背包问题。

分支定界法:它是解决整数规划问题一种最常用的方法。典型应用就是解决整数规划问题。

②评价算法性能的方法如平摊分析中的聚集法,会计法和势能法。聚集法就是把指令分为几类,计算每一类的消耗,再全部叠加起来。会计法就是计算某个指令时提前将另一个指令的消耗也算进去,以后计算另一个指令时就不必再算了。势能法计算每一步的势的变化以及执行这步指令的消耗,再将每一步消耗全部累计。

这几种方法都是平摊分析法,平摊分析的实质就是总体考虑指令的消耗时间,尽管某些指令的消耗时间很大也可以忽略不计。上述三种方法难易程度差不多,每种方法都有属于它的难点。如聚集法中如何将指令有效分类,会计法中用什么指令提前计算什么指令的消耗,势能法中如何选取势能。因此掌握这些方法原理还不够,还要学会去应用,在具体的问题中去判断分析。

三、算法与应用紧密相关

我认为学习算法不能局限于书本上的理论运算,局限于如何提高性能以降低复杂度,我们要将它与实际生活联系起来。其实算法问题的产生就来自于生活,设计出高效的算法就是为了更好的应用。如寻找最长公共子序列算法可以应用在生物信息学中通过检测相似DNA片段的相似成分来检测生物特性的相似性,也可以用来判断两个字符串的相近性,这可应用在数据挖掘中。快速傅立叶变换(FFT)可应用在计算多项式相乘上来降低复杂度,脱线min算法就是利用了Union-Find这种结构。还有图中相关算法,它对于解决网络流量分配问题起了很大的帮助,等等。

这些应用给了我很大的启发:因为单纯讲一个Union-Find算法,即使了解了它的实现原理,遇到具体的实际问题也不知去如何应用。这就要求我们要将自己学到的算法要和实际问题结合起来,不能停留在思想方法阶段,要学以致用,做到具体问题具体分析。

四、对计算模型和NP问题的理解

由于对这部分内容不是很理解,所以就粗浅的谈一下我的看法。

首先谈到计算模型,就不得不提到图灵计算,他将基本的计算抽象化,造出一个图灵机,得出了计算的本质。并提出图灵机可以计算的问题都是可以计算的,否则就是不可计算的。由此引申出一个著名论题:任何合理的计算模型都是相互等价的。它说明了可计算性本身不依赖于任何具体的模型而客观存在。

NP问题比较复杂,我认为它是制约算法发展的瓶颈,但这也是算法分析的魅力所在。NP问题一般可分为3类,NP-C问题,NP-hard问题以及顽型问题。NP-C它有个特殊的性质,如果存在一个NP-C问题找到一个多项式时间的解法,则所有的NP-C问题都能找到多项式时间解法。如哈密顿回路问题。NP-hard主要是解决最优化问题。它不一定是NP问题。这些问题在规模较小时可以找出精确解,但是规模大时,就因时间太复杂而找不到最优解。此时一般会采用近似算法的解法。顽型问题就是已经证明不可能有多项式时间的算法,如汉诺塔问题。

最后谈谈对这门课程的建议

①对于这门算法课,我认为应该加强对算法思想方法的学习。所以我建议老师可不可以先抛出问题而不给出答案,讲完一章,再发课件。让我们先思考一会儿,或者给出个奖励机制,谁能解决这个问题,平时成绩加分。这在一定程度上会将强我们思考分析问题的能力。因为我感觉到,一个问题出来,未经过思考就已经知晓它的答案,就没什么意思,得不到提高,而且也不能加深对问题的思考和理解。下次遇到类似的问题也就没有什么印象。而且上课让我们思考,点名回答问题可以一定程度上有效的防止不认真听课的现象。

②作业安排的不是很恰当。本门课主要安排了三次作业,个人感觉只有第一次作业比较有意思。后面两次作业只是实现一下伪代码,没有太多的技术含量。而且对于培养我们的解决问题的能力也没有太多的帮助,因为这间接成为了程序设计题,不是算法设计题。

③本门课的时间安排的不太恰当,因为本学期的课程太多,压力太大。没有太多的时间去学习这门课程。因为我相信大家都对它感兴趣,比较重视,想花功夫,但苦于没时间。所以可不可以将课程提前一个学期,那时候离散数学也已经学过,且课程的压力也不是很大。错开时间的话,我觉得应该能够更好提高大家算法分析设计的能力。

下载算法复习材料word格式文档
下载算法复习材料.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    算法总结

    算法分块总结 为备战2005年11月4日成都一战,特将已经做过的题目按算法分块做一个全面详细的总结,主要突出算法思路,尽量选取有代表性的题目,尽量做到算法的全面性,不漏任何ACM可......

    算法实验报告

    《算法设计与分析》 实验报告 班级姓名学号年 月日 目录 实验一二分查找程序实现…………………………………………………………………03页 实验二棋盘覆盖问题(分治法).…......

    算法和算法描述教案

    一、教学内容:算法和算法的描述(选修1算法与程序设计 广东教育出版社) 二、教学课时:1课时 三、教学地点:计算机室2 四、教学目标: 1、知识目标 (1)明白算法的概念,理解算法的特征。......

    算法总结材料

    源程序代码: } 一、 自然数拆分(递归) } #include 二、快速排序(递归) int a[100]; void spilt(int t) #include { int k,j,l,i; main() for(k=1;k......

    算法学习心得

    算法设计与分析学习心得 班级:物联网1201 姓名:刘潇 学号:1030612129 一、实验内容:这学期的算法与设计课,老师布置了这四个问题,分别是货郎担问题,动态生成二维数组,对话框下拉列......

    重庆普通专升本《计算机程序设计》中常用算法复习[推荐5篇]

    重庆普通专升本《计算机程序设计》中常用算法复习一、常用算法有8个方面: 1、递推算法(级数、数列求和、二分法、梯形法、穷举法等) 2、排序算法(选择法排序、冒泡法) 3、查找算......

    高考数学二轮专题复习:专题十算法与统计5篇范文

    专题十 算法与统计 自查网络 核心背记 一、算法与程序框图 1.算法是解决某类问题的一系列步骤或程序,只要按照这些步骤执行,都能使问题得到解决.其基本思想是 一. 2.作为一个算法,......

    复习课《运算定律与简便算法 》教学反思:

    复习课《运算定律与简便算法 》教学反思: 本节课的设计主要是以学生为主,通过多样化的学习方式,让学生乐于探究、主动参与、勤于动手,充分调动了每一个学生的参与意识和学习积极......