当前位置:文档之家› 算法课程设计资料

算法课程设计资料

算法课程设计资料
算法课程设计资料

课程设计实验题目是装错信封问题

某人写了n封信,写了这n封信对应的n个信封。把所有的信都装错了信封的情况,共有多少种?展示所有信都装错了信封的情形。

这是组合数学中有名的错位。著名数学家伯努利曾最先考虑此问题。后来,奥拉大师对此题产生了兴趣,独立的解决了此题。

本案例要求程序设计展示所有错位状态并且用递归法解决问题,用递归法解决问题的过程中正确的设计需要的函数且学会怎么调用自身,在使用递归时,必须有一个明确的递归结束条件。

二、课程设计试验的目的

通过使用递归法解决装错信封问题的过程中要积累调试经验,进一步熟悉程序的输入、输出函数的使用,增强程序设计的能力,熟悉各种类型变量的定义和含义,加深算法设计和分析能力,了解选择结构,循环结构,条件结构的用法并学会怎样调用函数,怎样才能用递归法解决问题的知识。通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤。学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。通过上机实践增强和巩固所学到的知识,进一步理解和运用结构化程序设计的思想和方法,学会调试一个较长程序的基本方法。

三、课程设计实验的意义

通过上机实验,巩固我所学的关于算法程序设计的知识。掌握程序设计的基本结构,程序设计必备的基本知识,只有掌握好这些基本结构,才能进一步进行程序设计,进行更复杂的算法设计,掌握程序的调试方法和技巧。程序在起初设计的时候,经常出现溢出错误,而且不只一处。为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,对于以后的学习有了几点总结:第一、熟记各种数据结构类型,定义、特点、基本运算(分开点一点也没多少东西,难度不大,但是基本);第二、各种常用的排序算法,如冒泡排序、堆排序……,这些是必考的内容。第三,多做习题,看题型,针对题型来有选择复习;算法看上去很复杂,但你静下心来把书扫上几遍,分解各个知识点,这一下来,学算法的思路就会很清晰了。经过这次实习,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语

言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。

四、课程设计的具体程序

//装错信封问题

#include

int n,a[30];long s=0;

void main()

{ int put(int k);

printf("input n(n<10):");

scanf("%d",&n);

put(1); //从第1个数开始

printf("\n总数为:%ld\n",s); //输出个数

}

//装错信封问题递归函数put(k)

int put(int k)

{ int i,j,u;

if(k<=n)

{ for(i=1;i<=n;i++)

{ a[k]=i; //探索第k个数赋值i

if(a[k]!=k)

{ for(u=0,j=1;j<=k-1;j++)

if(a[k]==a[j]) //若出现重复数字

u=1; //第k数不可置i,则u=1 }

else continue; //a[i]在自然位时返回进行下一轮探索if(u==0) //若第k数可置i,则检测是否到n个数{ if(k==n)

{ s++;printf(" "); //已到n,则输出解

for(j=1;j<=n;j++)

printf("%d",a[j]);

if(s%10==0)printf("\n");

}

else

put(k+1); //若没到n个数,则探索下一个数put(k+1)

}

}

}

return s;

}

五、程序分析

首先设计递归函数,设置a数组在n个整数1~n中选取n个数。

递归函数p(k)的变量k从1开始取值。当k<=n时,第k个数a(k)取i=1,2,………,n,并标志量u=0.

①若a(k)在自然位即刻返回进行下一轮探索,或a(k)与其前面已取得数a(j)(j

②若a(k)不在自然位且与所有前面已取得a(j)比较,没有一个相等,则第k个数取i成功,标志量u=0,然后判断:

若k=n,即已取了n个元素不在自然位,即a[n]!=n,输出这n个数即为一错位排列,并用s统计排列的个数;输出一个排列后,a(k)继续从i+1开始,在余下的数中取下一个数。直到全部取完,则返回上一次调用p(k)处,即回溯到p(k-1),第k-1个数继续往下取值。

若k

③标志量u=1,第k个数取i不成功,则接着从i+1开始中取下一个数。若在1~n中的每一个数都取了,仍是u=1,则返回上一次调用p(k)处,即回溯到p(k-1),第k-1个数继续往下取值。

可见递归具有回溯的功能,即p(k)在取所有n个数之后,自动返回调p(k)的上一层,即回溯到p(k-1),第k-1继续往下取值。这也是递归能把所有错位排

列一个不剩全部展示的原因所在。

六、结果分析

图1-1

分析:当输入n=4,即得9个4位错位排列。

七、总结:

算法与程序设计课程已经学习了半年时间了,检验我们学习成果的机会终于到了——算法课程设计。课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们学生实际工作能力的具体训练和考察过程。因此,我们都极度的重视这次的课程设计。当老师给我们布置这次课程设计时,我们都积极的开始选择了自己要做的课程设计题目,又怕自己做不出来,因为对我们民族生来说这是不容易的。幸好老师给我们了一些参考资料,让我们省去了好多时间,但是我们为了自己的课程进行完善需要在网上查找有关资料。在为期两周的课程设计中,我学到了不少东西。一边自己对算法的认识比以前深了,一边复习了自己以前学过的知识,自己的思考能力和查找速度也有了提高。总之,通过这次课程设计,我的收获不少,而且我也相信这次课程设计为自己以后的学习和工作有很大的好处。最重要的是通过这次课程设计,我们即复习了以前学过的旧知识,还要学到了许多的新的知识。这个表明,我们每个学生的学习不应该只限于我们的课本,而要充分利用身边的资源自学(图书馆里有许多指导书、现在我们上网也是很方便)。因为,课本上告诉我们的是有限的,所设计的面也是有限的,在这样有限的范围内我们不能学习到无限的知识。我能说,在这次课程设计中我学到了不少东西,也要学会了和别人合作、交流。

在编程过程中,我体会到了学习编程的辛苦,需要思考,需要花时间去寻找,每一个步骤都需要一个一个的编程,调试,修改,还需要耐心。这些条件才使得我完成了这个任务。

上学期的C语言跟这学期的算法都算不上真正的懂,对于书上的稍微难点

的知识就是是而非的,所以我只是对老师的程序理解,我也试着去改变了一些变量,自己也尽量多的去理解老师做程序的思路。当我第一天坐在那里的时候,我就不知道该做些什么,后来我只有下来自己看了一遍书来熟悉下以前学过的知识。

通过这次的程序设计,发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,以前偷工减料的学习也不可能一下子写出一个程序出来,于是我就认真看老师写的程序,发现我们看懂了一个程序其实不难,难的是对于一个程序的思想的理解,我们要掌握一个算法,不仅仅限于读懂,主要的是要理解老师的思路,学习老师的解决问题的方法。

将近两个星期的课程设计,让我从中更深的体会到了合作的重要性。在这个过程中我不仅学到了算法程设计知识,也学会了如何运用所学的知识。在此再次感谢讲师老师提供的帮助,谢谢老师!

一、课程设计实验的题目

课程设计试验的题目是特殊错位探索。

求解部分元素在自然位,部分元素错位的排列问题,往往需添加上一些特定的限制错位条件。

例如,在1~n的全排列中,展示偶数在其自然位而奇数全错位的所有形象。

二、课程设计的目的

用回溯法求解部分元素在自然位,部分元素错位的排列问题,首先要知道自然位是什么,错位是什么,那所谓的自然位指的是某一元素在自己相应位置(如‘3’在第3个位置)称为在自然为;把某一元素不在自己相应位置称为错位,在解决这道题的过程中必须掌握数组的定义、使用方法,掌握数组元素引用的特点、编程注意事项,掌握使用数组解决问题时的一些经典算法及学会用回溯法解决问题的过程。巩固和加深对算法的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

三、课程设计实验的意义

用回溯法解决问题的实验能让学生进一步的提高程序设计编程和调试的能力,对于数组元素引用及循环控制的特点,也可以在实验中得以加深理解和巩固知识。在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力,同时可接触到更多的经典算法,这些算法很多都是通过数组类型存储数据并实现的,有了这些基础后,学生可以在今后的编程中应用这些知识。通过这次数据结构课程设计的实验,在解决问题的过程中,充分体会到了算法这门课程的重要性,也体会到了数据结构+算法=程序这句话的真正含义,一个实际问题的解决第一步就是要依赖于良好的抽象思维的,将实际问题转化为相应的数据结构,只有这一步做好了,才能采取相应的算法和优化方法解决问题和解决好问题。每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是把课本的知识应用到实际中,让我们了解我们的学习有什么用,能够解决什么样的问题,增加自信和学习的动力。

四、课程设计的具体程序

//有限制条件的错位排列

#include

void main()

{ int n,i,j,t,a[30];

long s=0;

printf("input n(n<10):");

scanf("%d",&n);

i=1;a[i]=3;

while(1)

{ t=1;

if(i%2==0&&a[i]==i||i%2!=0&&a[i]!=i)

{

for(j=1;j

{t=0;break;}

}

else t=0; //a[i]为奇数在自然位或偶书错位返回if(t&&i==n)

{ s++;

for(j=1;j<=n;j++)

printf("%d",a[j]);

printf(" ");

if(s%5==0)printf("\n");

}

if(t&&i

{i++;a[i]=1;continue;}

while(a[i]==n&&i>0)i--; //调整或回溯

if(i>0) a[i]++;

else break;

}

printf("\n s=%ld\n",s);

}

五、程序分析

利用回溯法求解时首先设置a数组,数组元素在n个整数1~n中选取n个数。问题的解空间是由整数1~n中组成的n项数组,其约束条件是i%2=0and a[i]==i or i%2!=0 and a[i]!=i。

在1~n的全排列中,展示偶数在其自然位而奇数全错位的所有形象,设置标志量t。当a[i]满足约束条件时,t=1及检测a[i]=a[j]避免出现相同元素出现,如果出现相同元素则返回。如果t=0表示a[i]为奇数在自然位或偶数错位是返回。设置a数组在前1~n个正整数中取值。约定第1个数a[1]=3,元素a[i]的取值是否可行,赋值t=1;然后判断。

若a[j]==a[i](j=1,2,…,i-1),即a[i]与前面的a[j]相同,a[i]取值不行,标注t=0

若判断后保持t=1;说明a[i]取值可行。

若(t&&i==n),则j++ 即继续, 用s统计解的个数。

若a[i]已取到n,再不可能往后取值,则i--;即行回溯。

六、结果分析

图2-1

分析:当输入n=9,即得44个9位错位排列。

七、总结:

刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次

壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。C++里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。在这一段努力学习的过程中,我们的编程设计有了明显的提高。其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。作为一名计算机专业的大二学生,我觉得程序设计课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。要做好一个课程设计要有一个清晰的思路;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

一、课程设计实验的题目

课程设计饰演的题目是特殊错位的探索。

前面的程序设计在展示偶数在其自然位而奇数全错位的所有排列中,需要对每位数进行探索和回溯,其实对于处于自然位的偶数,已经固定了,例如2只能处于第2位,8只能处于第8位等,因此程序作了一些无用的循环判断和回溯,当n非常大时显然会降低解题效率。为此,可以先固定偶数的自然位,只对奇数进行探索和回溯,这样程序的执行效率会大大增加。

二、课程设计的目的

用回溯法解决先确定偶数自然位,这部算法中多次使用了多种语句方法,及循环语句、条件语句和选择语句格式,掌握各种语句中如何正确的设定条件,如何正确的控制循环次数,掌握程序调试的方法和技巧。学习算法是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高,了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力,初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能;培养软件工作者所应具备的科学的工作方法和作风。

三、课程设计的意义

通过上机实验,巩固所学的控制结构知识。其中多次使用了循环结构,循环结构是结构化程序设计的基本结构之一,它与顺序结构、选择结构共同作为各种复杂程序的基本构造单元。掌握好循环结构程序设计同时与选择结构配合使用,才能进行更复杂的算法设计,才能解决更多的复杂问题。这是程序设计的能力的基本奠定和积累阶段,在整个教学过程中具有重要的意义,因此本部分的实验,对于提高学生的程序设计能力具有非常重要的作用,应给予高度的重视。在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼对事情的分析能力,通过怎样解决过程中出现的问题,提高我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。而且,经历这次的课程设计,也学会自学和分工协作。编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。

四、具体程序

//先确定偶数自然位的求解

#include

void main()

{ int n,i,j,t,a[30];

long s=0;

printf("input n(2

scanf("%d",&n);

for(i=2;i<=n;i+=2) a[i]=i; //先确定偶数的自然位

i=1;a[i]=3;

while(1)

{ t=1;

if(a[i]!=i)

{ for(j=1;j

if(a[j]==a[i])

{t=0;break;}

}

else t=0; //当前奇数在自然位时返回if(t&&(i>=n-1))

{ s++;

for(j=1;j<=n;j++)printf("%d",a[j]);

printf(" ");

if(s%5==0)printf("\n");

}

if(t&&i

{i+=2;a[i]=1;continue;}

while(i>0&&a[i]>=n-1) i-=2; //调整或回溯

if(i>0) a[i]+=2;

else break;

}

printf("\n s=%ld\n",s);

}

五、程序分析

利用回溯法求解时首先设置a数组,数组元素在n个整数1~n中选取n个数。问题的解空间是由整数1~n中组成的n项数组。1~n的全排列中,展示偶数在其自然位而奇数全错位的所有形象,设置标志量t。先要确定偶数的自然位,若t =1即a[i]!=i,判断是否符合条件。若出现相同元素则返回。

若t&&(i>=n-1),即还未取n个数,即继续探索一下一个数,下一个数又从(1~n)中取数。

标志量u=1,第k个数取i不成功,则接着从i+1开始中取下一个数。

若i>0&&a[i]>=n-1在1~n中的每一个数都取了,找出奇数排错位。

若a[i]已取到n,再不可能往后取值;即行回溯。

用s统计解的个数。

六、结果分析

图3-1

分析:当输入n=8,即得9个8位错位排列。

七、总结

这是一门纯属于设计的科目,它需用把理论变为上机调试。在学习科目的第一节课起,老师就为我们阐述了它的重要性。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。算法程序设计作为我们的主要专业课之一,虽然在大二开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对算法的兴趣也在逐渐增加。

这次算法程序设计课程设计我们历时两个星期,现在想来,也许学校安排的课程设计有着它更深层的意义吧,它让我们综合那些理论知识来运用到设计和创

新。没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力,在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我这次花去的时间比别人多,但我相信我能得到的也会更多!通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名计算机专业的学生,计算机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。

根据我在做课设中遇到得问题,我将在以后的学习过程中注意以下几点:

1、认真上好专业实验课,多在实践中锻炼自己。

2、写程序的过程中要考虑周到,严密。

3、在做设计的时候要有信心,有耐心,切勿浮躁。

4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。

5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

一、课程设计实验的题目

课程设计饰演的题目是n皇后问题。

著名的高斯八皇后问题是借助国际象棋高度抽象出来的一个形象有趣的组合数学问题,实际上是一个有着特殊要求的排列设计

一般地,要求在n*n棋盘放置n个皇后使它们互不攻击,即成为n皇后问题。它们是八皇后问题的直接推广。

根据键盘输入的正整数n,求出n皇后问题的所有解。

二、课程设计的目的

掌握回溯算法基本思想及解题步骤。

回溯算法的求解过程实质上是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中。

回溯方法的步骤如下:

1) 定义一个解空间,它包含问题的解。

2) 用适于搜索的方式组织该空间。

3) 用深度优先法搜索该空间,利用限界函数避免移动到不可能产生解的子空间。

课程设计时巩固所学的理论知识,提高程序设计能力的重要实践环节。算法课程设计目的是,深入理解数据结构的基本理论,掌握对数据结构各种操作的算法设计方法,增强对基础知识和基本方法的总格运用能力,提高程序设计能力,在实践中培养独立分析问题和解决问题的作风和能力。通过课程设计,加深对算法课程内容以及相关技术的理解,并提高运用算法理论解决实际问题的能力。三、课程设计的意义

通过这次课程设计,加深对算法所学的基本知识加强以前所学过的基本知识,如C语言的结构和简单C程序语法知识的理解,提高我们对问题的分析理解。通过调试程序,让我们对程序的编辑、编译、链接和运行过程有一个直观的感受和体验,激发学习的好奇心和兴趣。只有掌握好这些基本结构,才能进一步进行程序设计,进行更复杂的算法设计。对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。把学过的程序设计的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对于程序设计的认识是模糊的,概念上的,现在

通过自己动手做实验,对程序设计的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,将不必要的命令去除。在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解C++的内部功能及内部实现,培养实践动手能力和程序设计能力的目的。

四、具体程序

//n皇后问题

#include

void main()

{int i,g,k,j,n,s,x,a[20];

printf("请输入整数n:");

scanf("%d",&n);

printf("%d皇后问题的解:\n",n);

i=1;s=0;a[1]=1;

while(1)

{g=1;

for(k=i-1;k>=1;k--)

{x=a[i]-a[k];

if(x<0)x=-x; //确保x非负

if(x==0||x==i-k)g=0; //相同或同处一对角线上时返回}

if(i==n&&g==1) //满足条件时输出解

{for(j=1;j<=n;j++)

printf("%d",a[j]);

printf(" ");

s++;

if(s%5==0)printf("\n");

}

if(i

{i++;a[i]=1;continue;}

while(a[i]==n&&i>1)i--; //往前回溯

if(a[i]==n&&i==1)break;

else a[i]=a[i]+1;

}

printf("\n共%d个解.\n",s);

}

五、程序分析

设置数组a[n],数组元素a[i]表示第i行皇后位于第a[i]列。

求n皇后问题的一个解,及寻求a数组的一组取值,该组取值中每一元素的值互不相同(即没有任两个皇后在同一行或同一列),且第i个元素与第k个元素相差不为|i-k|(即任两个皇后不在同一45°角的斜线上)。

问题的解空间是由整数1~n组成的n项数组,其约束条件是没有相同整数且每两个整数之差不等于其所在位置之差。

在永真循环中,a[i]从1~n范围内取一个值。

为了检验a[i]是否满足上述要求,设置标志变量g,g赋初值1。a[i]逐个与其前面的元素a[k]比较:

X=a[i]-a[k];

if(x<0)x=-x; //确保x非负

if(x==0||x==i-k)g=0; //相同或同处一对角线上时返回

若出现g=0,则表明a[i]不满足要求,a[i]增1后再试,以此类推。

若i=n且g=1,则满足要求,用s统计解的个数,格式打印输出这组解。

若i

若a[n]=n,则返回前一个数组元素a[n-1]增1赋值(此时,a[n]又从1开始)再试。

若a[n-1]=n,则返回前一个数组元素a[n-2]增1赋值再试。

一般地,若a[i]=n(i>1),则回溯到前一个数组元素a[i-1]增1赋值再试。

直到a[1]=n时,已无法返回,意味着已完成回溯试探,求解结束。

六、结果分析

图4-1

分析:当输入n=5,即输出5皇后问题的所有10个解。

七、总结

这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在整个设计过程中,构思是很花费时间的。调试时经常会遇到这样那样的错误,有的是因为粗心造成的语法错误。当然,很多也时用错了方法,总是实现不了。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

经过三个星期的课程设计,过程曲折可谓一语难尽。整天都是对着电脑,不然就是翻阅资料。在此期间我失落过,也曾一度热情高涨。点点滴滴令我回味无长。这次课程设计使我体会到只有做到细心耐心,恒心才能做好事情。

这次的课程设计,加强了我们动手、思考和解决问题的能力。巩固和加深了对算法的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。

这次试验中,我发现书本上的知识是一个基础,但是我基础都没掌握,更别说写出一个整整的程序了。自己在写程序的时候,也发现自己的知识太少了,特别是基础知识很多都是模模糊糊的一个概念,没有落实到真正的程序,所以自己写的时候也感到万分痛苦,基本上涉及一个知识我就会去看看书,对于书本上的知识没掌握好。在饭后闲暇时间我也总结了一下,自己以前上课也认真的听了,但是还是写不出来,这主要归结于自己的练习太少了,而且也总是半懂就不管了。在改写老师的程序中也出现了很多的问题,不断的修改就是不断的学习过程,当我们全身心的投入其中时,实际上是一件很有乐趣的事情。

算法设计与分析课程设计(完整版)

HUNAN CITY UNIVERSITY 算法设计与分析课程设计 题目:求最大值与最小值问题 专业: 学号: 姓名: 指导教师: 成绩: 二0年月日

一、问题描述 输入一列整数,求出该列整数中的最大值与最小值。 二、课程设计目的 通过课程设计,提高用计算机解决实际问题的能力,提高独立实践的能力,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。提高适应实际,实践编程的能力。在实际的编程和调试综合试题的基础上,把高级语言程序设计的思想、编程巧和解题思路进行总结与概括,通过比较系统地练习达到真正比较熟练地掌握计算机编程的基本功,为后续的学习打下基础。了解一般程序设计的基本思路与方法。 三、问题分析 看到这个题目我们最容易想到的算法是直接比较算法:将数组的第 1 个元素分别赋给两个临时变量:fmax:=A[1]; fmin:=A[1]; 然后从数组的第 2 个元素 A[2]开始直到第 n个元素逐个与 fmax 和 fmin 比较,在每次比较中,如果A[i] > fmax,则用 A[i]的值替换 fmax 的值;如果 A[i] < fmin,则用 A[i]的值替换 fmin 的值;否则保持 fmax(fmin)的值不变。这样在程序结束时的fmax、fmin 的值就分别是数组的最大值和最小值。这个算法在最好、最坏情况下,元素的比较次数都是 2(n-1),而平均比较次数也为 2(n-1)。 如果将上面的比较过程修改为:从数组的第 2 个元素 A[2]开始直到第 n 个元素,每个 A[i]都是首先与 fmax 比较,如果 A[i]>fmax,则用 A[i]的值替换 fmax 的值;否则才将 A[i]与 fmin 比较,如果 A[i] < fmin,则用 A[i]的值替换 fmin 的值。 这样的算法在最好、最坏情况下使用的比较次数分别是 n-1 和 2(n-1),而平均比较次数是 3(n-1)/2,因为在比较过程中,将有一半的几率出现 A[i]>fmax 情况。

午餐肉包装工艺课程设计

齐齐哈尔大学 课程设计说明书 课程名称包装工艺学 题目午餐肉包装工艺课程设计 学院轻工与纺织学院 班级包装131 学生姓名马驰 指导教师董峰 2016年 07月 05日

物性与流通环境分析及防护措施 (3) 午餐肉原料的分析 (3) 流通环境的分析 (3) 防护要求 (4) 2.包装材料的选择 (4) 内包装材料 (5) 中包装材料 (7) 外包装材料 (8) 3.包装工艺技术方案确定 (9) 包装工艺流程设计及技术要求 (9) 包装工艺综合卡 (10) 包装工艺课程设计审阅评语 (11) 参考文献 (12)

物性与流通环境分析及防护措施 午餐肉罐头为一种肉糜制品,如猪肉、羊肉、牛肉、午餐肉、火腿午餐肉、咸肉午餐肉等。现以猪肉为例介绍午餐肉罐头的加工技术。午餐肉风味独特、食用方便,深受消费者欢迎,是我国出口的主要肉类罐头之一。 午餐肉原料的分析 午餐肉主要是以猪肉、鸡肉为原料,加入一定量的淀粉、香辛料加工制成的。主要是猪肉、淀粉、食盐、香辛料、亚硝酸盐和少量的水。亚硝酸盐在午餐肉制品中首先被还原成亚硝酸,生成的HNO2性质不稳定,在常温下分解为亚硝基,亚硝基很快与肌红蛋白反应生成一氧化氮肌红蛋白,这是一种含Fe2+的鲜亮红色的化 合物,这种物质性质稳定,即使加热Fe2+与NO-也不易分离,这就使肉制品呈现诱人的鲜红色,增加消费者的购买欲,提高肉制品的商品性。亚硝酸盐除了上述发色作用外,还有抑菌作用、腌制作用、螯合和稳定作用。 配方为 流通环境的分析 (1)运输环节的分析 午餐肉罐头在从厂家到消费者的手中必然要经过一些运输环境,比如用汽车、火

车、和人工手推车的运输,在各个运输环节都可能会出现不同层级上的损坏和不同程度上的撞击作用。例如在汽车运输过程中,就要考虑在运输过程中公路的颠簸以及午餐肉罐头之间互相撞击产生的影响,并且在运输过程中也要考虑到运输天气的影响,不同程度的环境条件会对产品的包装和产品本身造成一定程度的损坏。所以在产品的运输过程中要充分考虑缓冲包装以及防护的严密性,提高产品的运输质量。 (2)储存环节的分析 午餐肉罐头在流通环境中的储存环节也是一个非常重要的环节,其中要考虑到货物的堆码高度,储存的时间,以及地点和环境的问题。因此在设计包装时要需要考虑到外包装的承受压力和强度以确保在产品在流通过程中的安全。在储存期间也要注意储存的环境问题,不要放在温湿度较高的仓库里,在设计外包装时也要进行防潮处理,可以更好的提高产品的储存时间。 (3)搬运环节的分析 任何产品在流通过程中都会经历搬运环节,在此环节中避免不了搬运工人对包装件的装卸方式粗暴。在午餐肉包装采用马口铁包装,中包装采用收缩膜,外包装采用瓦楞纸箱包装。在此流通过程中比较容易造成产品损坏的主要有瓦楞纸箱,由于在搬运次数多,会导致瓦楞纸箱受到的压力增加,因此在设计过程中要在瓦楞纸箱上标出醒目的标志以及必要的捆扎带。 防护要求 午餐肉包装采用的是内包装用马口铁包装、中包装采用收缩膜进行包装、外包装 采用瓦楞纸箱进行包装。这样的结构基础基本可以保证午餐肉罐头在运输条件下 得到较好的保护。午餐头在储存和流通的过程中对防护的要求就是要保证午餐肉 的各项性能得到较好的保护,包括它的风味和它自身的营养价值,保证在保质期 内不会发生变质问题,这次包装设计只要就是为了能够更好的保护午餐头罐头。 外包装采用瓦楞纸箱是为了集合小包装使运输方便并且可以达到保护产品的基本 目的。 2.包装材料的选择

课程设计说明书范本模板

辽宁工业大学 工艺课程设计( 论文) 题目: Al-12.5 Si-3 Cu-2-2Ni-0.5Mg铸造合金热处理工艺设计 院(系): 光伏学院 专业班级: 材料工程技术102 学号: 学生姓名: 杨向天 指导教师: 李青春 教师职称: 副教授 起止时间: -7-5~ -7-16

前言 合金工具钢的淬硬性、淬透性、耐磨性和韧性均比碳素工具钢高, 按用途大致可分为刃具、模具和检验尺寸使用的量具用钢三类。合金工具钢广泛用作刃具、冷、热变形模具和量具, 也可用于制作柴油机燃料泵的活塞、阀门、阀座以及燃料阀喷嘴等。 此设计是经过在课堂学习热处理理论知识后的探索和尝试, 其内容讨论如何设计圆板牙钢的热处理工艺, 重点是制定合理的热处理规程, 并按此完成Al-12.5Si-3Cu圆板牙钢的热处理工艺设计。

目录( 小二号黑体, 段前段后1行, 1.25倍行距, 居中排列) 1 低合金刃具钢热处理工艺概述........................................ 错误!未定义书签。 2 圆板牙钢的热处理工艺设计............................................ 错误!未定义书签。 2.1 圆板牙钢的服役条件、失效形式......................... 错误!未定义书签。 2.2 圆板牙技术要求及示意图 ...................................... 错误!未定义书签。 2.3 圆板牙钢的材料选择 .............................................. 错误!未定义书签。 2.4 圆板牙9SiCr钢的C曲线...................................... 错误!未定义书签。 2.5 圆板牙9SiCr钢加工工艺流程图........................... 错误!未定义书签。 2.6 9SiCr圆板牙(M12)钢退火-淬火-回火热处理工艺错误!未定义书签。 2.7 9SiCr圆板牙钢退火、淬火、回火热处理工艺理论错误!未定义书 签。 2.8 选择设备、仪表和工夹具..................................... 错误!未定义书签。 2.9 圆板牙热处理质量检验项目、内容及要求 ........ 错误!未定义书签。 2.10 圆板牙热处理常见缺陷的预防及补救方法........ 错误!未定义书签。 3 参考文献 ............................................................................ 错误!未定义书签。

算法课程设计资料

吉林财经大学课程设计报告 课程名称:算法课程设计 设计题目:插棒游戏 所在院系:管理科学与信息工程学院计算机科学与技术 指导教师: 职称:副教授 提交时间: 2017年4月

目录 一、题目描述与设计要求 (1) 1 题目描述与设计要求 (1) 二、问题分析 (1) 1 解空间 (1) 2 解空间结构 (2) 3 剪枝 (2) 4 回溯法的基本思想 (2) 5 回溯法的适用条件 (3) 6 回溯法的空间树 (4) 7 回溯法的基本步骤 (4) 三、算法设计 (5) 1 伪代码 (5) 四、复杂性分析 (6) 1 时间复杂度 (6) 2 空间复杂度该 (6) 五、样本测试、分析与总结 (6) 1 样本测试 (6) 2 分析 (7) 2.1、数据类型 (7) 2.2 主要函数思路 (7) 2.3 回溯 (8) 3 总结 (8) 参考文献 (9) 附录 (10)

一、题目描述与设计要求 1 题目描述与设计要求 这个类似谜题的游戏在等边三角形的板上布置了 15 个孔。在初始时候,如下图所示,除了一个孔,所有孔都插上了插棒。一个插棒可以跳过它的直接邻居,移到一个空白的位置上。这一跳会把被跳过的邻居从板上移走。设计并实现一个回溯算法,求解该谜题的下列版本: a.已知空孔的位置,求出消去 13 个插棒的最短步骤,对剩下的插棒的最终位置不限。 b.已知空孔的位置,求出消去 13 个插棒的最短步骤,剩下的插棒最终要落在最初的空孔上。 图1 二、问题分析 1 解空间 由于棋盘的对称性,棋盘在变化的过程中会形成多个同构的状态。 例如初始状态时,空孔只有一个,共有15种基本状态。如图2 所示,任意状态与空孔位置在其它的与该空孔颜色相同的点处的状态是同构的,它们可以通过沿中位线翻转和旋转60o 互相转换。也就是说,空孔所在位置的颜色相同的个状态是同构的。如空孔位置在顶点处的三个状态,他们仅通过旋转60o的操作即可互相转换。

包装工艺设计课程设计报告

1.绪论 1.1设计的目的与意义 香皂是日常生活中必不可少的洗涤护理用品,香皂质地细腻、去污力强,是肥皂的改良品,本设计就是基于方便、卫生、环保的设计理念进行的设计,而且防护性能好,经济效益高,此设计的市场定位应该适合大部分人群,尤其主要是面向那些较常家居的人群。因此,工艺品包装应当提出具有个性化的包装设计方法,能够使产品在众多同类品牌中脱颖而出,首先从外观上吸引消费者的眼球,进而产生购买欲望;其次通过改良的包装结构,让产品的包装充分循环利用,将具有个性化的设计理念贯穿始终;最后,达到提升品牌形象,扩大产品的销售和影响力的目的并实施具有个性化的包装设计。本设计采用了一层用塑料制成的包装,解决了以前香皂保质期不长,消费者不放心的问题,且卫生、方便。 1.2香皂的市场调查 1963年舒肤佳除菌香皂首次在美国上市(属于宝洁公司的品牌之一),此后畅销于全世界几十个国家和地区。因其显著的抗菌功效,在国际上,舒肤佳品牌已获得多家国际医学专业团体的认可。在中国,舒肤佳的除菌功效也获得了中华医学会的验证,实验证明,舒肤佳能有效去除和抑制可能引起皮肤感染和汗臭的细菌。香皂附加成本增高和国外品牌占主导地位的现状,直接导致了香皂普遍售价高昂这一结果。由于国外香皂注重包装、设计、广告投入、整体策划,使得香皂生产的附加成本增高。因此,其上市产品的价格一开始就定得很高。而且通过调查,我们发现消费者心理注重包装设计精美大方、杀菌止痒功能好、美容功能好、气味清新、泡沫丰富、清洁性好、皂体硬度适中、外观保持性好、品种多样化、广告宣传到位。 2.产品的物性及流通环境的分析 2.1产品的物性 香皂以脂肪酸钠和其他表面活性剂为主要原料,添加品质改良剂和外观改良剂,经过加工成型后制成的产品。香皂的主要成分是脂肪酸钠和表面活性剂,此外还含有1%—1.5%的香精,一般用牛油、羊油和椰子油为原料,制皂前经过精炼、脱色、脱臭等精制处理。香皂使用时会沾上水,进而水分被香皂吸收。使用后,香皂里面的水分要挥发,但由于进入香皂的水分分布不均以及香皂各部分接触空气的程度不同,会导致水分的挥发程度不同,进而致使香皂出现裂痕。如果长期存放,香皂原料中含有的不饱和脂肪酸会被氧、光、微生物等氧化,有时会出现酸败现象,香皂中的水分也会散失,影响使用效果。舒肤佳香皂含有抗菌活性成份迪保肤,在清洗过程中能有效去除皮肤表面的暂留微生物。清洗后,舒肤佳留在皮肤上的抗菌活性成分迪保肤能有效抑制皮肤表面细菌的再生。

内部堆排序算法的实现课程设计说明书

数据结构课程设计设计说明书 内部堆排序算法的实现 学生姓名金少伟 学号1121024029 班级信管1101 成绩 指导教师曹阳 数学与计算机科学学院 2013年3月15日

课程设计任务书 2012—2013学年第二学期 课程设计名称:数据结构课程设计 课程设计题目:内部堆排序算法的实现 完成期限:自2013年3 月4日至2013年3 月15 日共 2 周 设计内容: 堆排序(heap sort)是直接选择排序法的改进,排序时,需要一个记录大小的辅助空间。n个关键字序列K1,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。(即如果按照线性存储该树,可得到一个不下降序列或不上升序列)。 本课程设计中主要完成以下内容: 1.设计堆排序算法并实现该算法。 2.对堆排序的时间复杂度及空间复杂度进行计算与探讨。 3.寻找改进堆排序的方法。 基本要求如下: 1.程序设计界面友好; 2.设计思想阐述清晰; 3.算法流程图正确; 4.软件测试方案合理、有效。指导教师:曹阳教研室负责人:申静 课程设计评阅

摘要 堆排序是直接选择排序法的改进。本课设以VC++6.0作为开发环境,C语言作为编程语言,编程实现了堆排序算法。程序运行正确,操作简单,易于为用户接受。 关键词:堆排序;C语言;时间复杂度

课程设计说明书模板

机械制造学课程设计说明书 题目名称 专业班级 学生姓名 学号 指导教师 机械与电子工程系 二○一四年月日

目录 一、任务书--------------- -------3 二、指导教师评阅表----------------------4 三、序言-------------------------------------------------------------------------------------------3 四、零件的分析-----------------------------------------------------------------------------------3 五、工艺规程的设计------------------------------------------------------------------------------4 (1). 确定毛坯的制造形式---------------------------------------------------------------4 (2). 基面的选择---------------------------------------------------------------------------4 (3). 制订工艺路线------------------------------------------------------------------------4 (4). 机械加工余量、工序尺寸及毛坯尺寸的确------------------------------------5 (5). 确定切削用量及基本工时---------------------------------------------------------6 六、设计心得与小结-----------------------------------------------------------------------------11 七参考文献-------------------------------------------------------------------------------------1 1

Dijkstra算法的实现-数据结构与算法课程设计报告

合肥学院 计算机科学与技术系 课程设计报告 2009 ~2010 学年第2 学期 课程数据结构与算法 课程设计名称Dijkstra算法的实现 学生姓名张睿辰 学号0804012044 专业班级08计科(2)班 指导教师王昆仑张贯虹 2010 年6月

Dijkstra算法的实现 一、问题分析与任务定义 1、课程设计题目: 1.1题目:对任意图,选择合适的数据结构表示图,在此基础上实现求解最短路径 的Dijkstra算法 1.2 要求:设计合理的数据结构存储图,简单有效的实现Dijkstra算法。 1.3具体任务:建立图的存储模块,建立图的输出模块,在建图后从单源点开始求最短 路径,并显示出来! 2、原始数据的输入格式: 2.1建图模块:2.1.1数字 2.2.2数字+空格+数字+空格+数字+回车 2.3显示模块:回车 3、实现功能: 3.1 建立有向图 3.2 显示存储的有向图 3.3 显示从顶点到其他各顶点的最短路径 4、测试用例: 4.1正确数据:a)顶点:3;边值信息:0 1 6;0 2 4;1 2 5;2 0 6;0 0 0; b)顶点:0;边值信息:0 0 0; 输出结果:a) v0到v1的最短路径是6,v0到v2的最短路径是4 b) 没有最短路径 4.2错误数据:a) 顶点:a b)顶点:2;边值信息:0 3 6;0 4 4;13 5;0 0 0; c)顶点:3;边值信息:0 1 a; 输出结果:边值错误,请从新输入 5、问题分析: 实现本程序要解决以下几个问题: 5.1如何存储一个有向图。 5.2如何在界面中输出该有向图。 5.3如何定义起始源点。 5.4如何选择出最短路径。 5.5找到的最短路径如何输出。 二、数据结构的选择和概要设计 1、数据结构的选择: 在图的结构中,任意两个顶点之间都可能存在关系,比线性表和树要复杂。由于不存在严格的前后顺序,因而不能采用简单的数组来存储图;另一方面,如果采用链表,由于图中各顶点的度数不尽相同,最小度数和最大度数可能相差很大,如果按最大度数的

包装工艺学课程设计

南京林业大学课程设计说明书 学生姓名:徐琦学号:100407120 专业:包装工程 题目:散剂药品的包装工艺规程制定 指导教师:徐长妍职称: 教授 2013年05 月28 日

南京林业大学 课程设计任务书 学院(系):材料科学与工程学院 专业:包装工程 学生姓名:徐琦学号:100407120课程设计题目:包装工艺学课程设计 起迄日期:4月15日~ 4月28日 课程设计地点:校内 指导教师:徐长妍 下达任务书日期: 2013 年5 月28 日

目录 设计任务书...............................................................1-4 正文.....................................................................4-10 1.散剂药品的特性分析及其对流通环境的要求.................................4-5 1.1散剂药品的商品属性.................................................4-5 1.2流通环境条件 (5) 2.散剂药品包装的材料选择 (5) 2.1散剂药品内袋包装材料的要求 (5) 2.2散剂药品内袋包装材料选择 (5) 2.3散剂药品外包装材料选择 (5) 2.4散剂药品运输包装材料选择 (5) 3.散剂药品包装结构设计 (6) 4.包装工艺路线的制定 (6) 5.包装工艺过程 (7) 5.1散剂药品内装袋的制袋工艺过程 (7) 5.2散剂药品外包装的装盒工艺过程 (7) 5.3散剂药品运输包装瓦楞纸箱制造工艺 (7) 6.包装工艺过程具体分析...................................................8-9 6.1散剂药品内装袋的制袋工艺过程的具体分析 (8) 6.2散剂药品外包装的装盒工艺过程的具体分析.............................8-9 6.3散剂药品运输包装瓦楞纸箱制造工艺的具体分析 (9) 7.集合包装工艺及运输....................................................9-10

算法课程设计

<<算法与程序设计>>课程作业 班级:计本08-1班 学号:3081817106 姓名:詹萍

简单算法 符号三角形问题:这个问题用的是回溯法解决的,符号三角形要求在符号三角形的第1行有n个由“+”和“-”组成的符号,以后每行符号比上行少1个,2个同号下面是“+”,2个异号下面是“-”。计算有多少个不同的符号三角形,使其所含“+”和“-”的个数相同。 解题思路: 1、针对所给问题定义解空间,该问题的解空间为n元组x1,x2,x3...xn,其中xi ∈S,S={0,1},其中0代表“+”, 1代表“-”; 2、确定易于搜索的解空间结构,例如子集树,排列树,该问题是子集树; 3、以深度优先原则搜索解空间树,并利用剪枝函数避免无效搜索,这里的约束函数应该为:在符号三角形的第一行的前i个符号x1...xi确定后,就确定了一个由i*(i+1)/2个符号组成的符号三角形。下一步确定了x(i+1)的值后,只要在前面已确定的符号三角形的右边加一条边,就可以扩展为x1...x(i+1)所相应的符号三角形。最终由x1...xn所确定的符号三角形中包含的“+”号个数与“-”号个数同为n*(n+1)/4。因此在回溯搜索过程中可用当前符号三角形所包含的“+”号个数与“-”号个数均不超过n*(n+1)/4作为可行性约束;用0和1代替+和-,执行异或操作推出下一行对应符号,当所有符号总数为奇数时无解,当某种符号超过总数一半时无解。 4.由于回溯法是对解空间的深度优先搜索,不断改变第一行每个符号,搜索符合条件的解,因此可以使用递归回溯。 #include using namespace std; class Triangle {friend int Computer(int);//定义友元函数 private: void Backtrack(int t); //t,第一行第t个符号 int n, //第1行符号的个数 half, //每个三角形总符号数的一半 count, // 统计减号的个数 **p; //指向三角形的二维指针 long sum; }; //统计符合条件的的三角形的个数 void Triangle::Backtrack(int t)//回溯法 {int i,j,k,s,f; if((count>half)||(t * (t-1)/2 - count > half)) return; //如果加号或减号的个数大于符号三角形中总符号数的一半则退出函数if(t<=n) //回溯条件直到n for(i=0; i<2; i++) { p[1][t] = i; //第一行第t个符号 count += i; //“-”号统计 for(j=2; j<=t; j++) //当第一行符号>=2时,可以运算出下面行的某些符号 { p[j][t-j+1] = p[j-1][t-j+1]^p[j-1][t-j+2]; //通过异或运算下行符号 count += p[j][t-j+1];} if(t>=n)

机械设计课程设计说明书模板.

燕山大学 机械设计课程设计说明书题目:带式输送机传动装置 学院(系):机械工程学院 年级专业: 09级机械设计及理论 学号: 0901******** 学生姓名:乔旋 指导教师:许立忠 教师职称:教授

目录 一、设计任务书.................................................................. 二、传动方案分析................................... .......................... 三、电动机的选择和参数计算........................................ 四、传动零件的设计计算................................................. 五、轴的设计...................................................................... 六、键的选择校核............................................................ 七、轴承的校核................................................................... 八、联轴器的选择及校核................................................ 九、密封与润滑的选择.................................................... 十、减速器附件及说明................................................... 十一、装配三维图........................................................ 十二、设计小结............................................................. 参考资料...................................................................

计算机算法设计与分析课程设计.

成绩评定表 学生姓名吴旭东班级学号1309010236 专业信息与计算 科学课程设计题目 分治法解决棋盘覆 盖问题;回溯法解 决数字拆分问题 评 语 组长签字: 成绩 日期20 年月日

课程设计任务书 学院理学院专业信息与计算科学 学生姓名吴旭东班级学号1309010236 课程设计题目分治法解决棋盘覆盖问题;回溯法解决数字拆分问题实践教学要求与任务: 要求: 1.巩固和加深对基本算法的理解和运用,提高综合运用课程知识进行算法设计与分析的能力。 2.培养学生自学参考书籍,查阅手册、和文献资料的能力。 3.通过实际课程设计,掌握利用分治法或动态规划算法,回溯法或分支限界法等方法的算法的基本思想,并能运用这些方法设计算法并编写程序解决实际问题。 4.了解与课程有关的知识,能正确解释和分析实验结果。 任务: 按照算法设计方法和原理,设计算法,编写程序并分析结果,完成如下内容: 1.运用分治算法求解排序问题。 2. 运用回溯算法求解N后问题。 工作计划与进度安排: 第12周:查阅资料。掌握算法设计思想,进行算法设计。 第13周:算法实现,调试程序并进行结果分析。 撰写课程设计报告,验收与答辩。 指导教师: 201 年月日专业负责人: 201 年月日 学院教学副院长: 201 年月日

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。算法 (Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。 分治法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在一个2^k*2^k的棋盘上, 恰有一个放歌与其他方格不同,且称该棋盘为特殊棋盘。 回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。数字拆分问题是指将一个整数划分为多个整数之和的问题。利用回溯法可以很好地解决数字拆分问题。将数字拆分然后回溯,从未解决问题。 关键词:分治法,回溯法,棋盘覆盖,数字拆分

包装工艺课程设计

天津科技大学 课程设计说明书糖水桃罐头包装工艺设计 姓名:杨威 学号: 08061208

《包装工艺学》课程设计任务书 一、课程设计选题 课程设计的选题主要以食品、农副产品、植物、花卉、药品等的包装及包装生产工艺设计为主。为了培养学生发现问题的意识,允许学生的选题超出以上规定的范围。 二、课程设计的任务和要求 1.市场调查 对选定产品的现有包装进行市场调研。市场调研的目的是汲取现有包装的优点,同时发现存在的问题。为下一步的改进设计作好前期准备。可以通过问卷调查的形式对以下4个方面进行调查: (1)对产品的现有包装状况进行调研; (2)产品的消费层次,消费者对现有包装的认识; (3)产品的价格; (4)产品从工厂→消费者的整个流通环节。 要求:通过市场调查,写出约1.5-2千字的调查总结报告,作为下一步工作的依据。 2.包装及工艺流程设计 (1)详细了解产品的物理、化学、生理生化性质。 (2)对产品包装进行改进设计(或进行概念设计)。 (3)要求正确选择包装材料、包装容器。设计出产品的销售包装和运输包装,并画出销售包装的三视图和运输包装的堆码方式示意图(包括在纸箱内的堆码、在托盘上的堆码)。对瓦楞纸箱堆码进行强度校核。 (4)设计相关的包装工艺流程、工艺条件,并按设备的布置画出工艺流程图。撰写工艺规程。 (5)列出生产设备明细(要有生产设备的主要参数)。 (6)写出评定包装产品货架寿命的实验方法,列出必要的实验项目,以验证包装设计的合理性。标明相关的技术标准。 三、时间安排 1.包装及工艺设计:5天 2.撰写课程设计说明书:1天

摘要:罐头是一种人们喜爱的休闲食品,是人们外出游玩的必备食品。通过市场调研,发现消费者普遍认为现有玻璃瓶罐头不易携带而且难于开启,本次设计针对糖水桃罐头外包装进行改善。创新引用软包装罐头,采用自立袋替换原有的玻璃瓶,通过人机工程学理论对外部造型和内部容量进行优化。制定罐头生产,制袋,灌装,运输等整套设计方案,并对包装各方面性能进行校核,分析每个环节对包装的货架寿命影响。 关键词:糖水桃罐头自立袋货架寿命 Abstract:Can is snack food that many people like.It is the necessity in journey. According to a reasearch from consumer,there is some problem on carrying and opening of the packing.We design a new packing for peaches in syrup.Stand-up pouchs is popular in food packing.We use it to replace the glass bottle.Proving its structure and specifications based on Man- Machine Engineering.We make a series program of peach producting,pouch making,filling and transoprtion.In the end,we chack different functions of packing,and analysis the influence of every part on shelf-life. Keywords:peaches in syrup·stand-up pouch·shelf-life

机械设计课程设计说明书格式

机械设计课程设计说明书格式 论文统一用A4打印纸书写(不允许用铅笔书写文字) 封面格式:教务处统一印制格式 扉页:装订设计任务书 目录页:书写目录 说明书装订顺序:封面+设计任务书+目录+正文+成绩评定表资料袋上的相关部分都要填写,资料袋底部写学号。 目录 1. 设计任务------------------------------------------------------1 2. 传动方案分析-----------------------------------------------页码 3. 电动机的选择计算-------------------------------------------页码 4. 传动装置的运动和动力参数的选择和计算-----------------------页码 5. 传动零件的设计计算-----------------------------------------页码5.1 高速级齿轮传动设计计算-------------------------------------页码 5.2 低速级齿轮传动设计计算-------------------------------------页码 6. 轴的设计计算-----------------------------------------------页码 7. 键连接的选择及计算-----------------------------------------页码 8. 滚动轴承的选择及计算---------------------------------------页码 9. 联轴器的选择-----------------------------------------------页码 10. 润滑与密封-------------------------------------------------页码 11. 箱体及附件的结构设计和选择---------------------------------页码 12. 设计小结---------------------------------------------------页码 13. 参考资料---------------------------------------------------页码

算法设计与分析课程设计-实验指导书

算法设计与分析课程设计 实验指导书 上海第二工业大学 计算机与信息学院软件工程系

一、运动员比赛日程表 设有n=2k个运动员要进行网球比赛。设计一个满足以下要求的比赛日程表: ●每个选手必须与其它n-1个选手各赛一次 ●每个选手一天只能赛一次 ●循环赛一共进行n-1天 1、运用分治策略,该问题的递归算法描述如下,根据算法编制程序并上机 通过。 输入:运动员人数n(假定n恰好为2的i次方) 输出:比赛日程表A[1..n,1..n] 1. for i←1 to n //设置运动员编号 2. A[i,1]←i 3. end for 4. Calendar(0,n) //位移为0,运动员人数为n。 过程Calendar(v, k) //v表示位移(v=起始行-1),k表示运动员人数。 1. if k=2 then //运动员人数为2个 2. A[v+2,2]←A[v+1,1] //处理右下角 3. A[v+1,2]←A[v+2,1]//处理右上角 4. else 5. Calendar(v,k/2) //假设已制定了v+1至v+k/2运动员循环赛日程表 6. Calendar(v+k/2,k/2) //假设已制定了v+k/2+1至v+k运动员循环赛日程表 7. comment:将2个k/2人组的解,组合成1个k人组的解。 8. for i←1 to k/2 9. for j←1 to k/2 10. A[v+i+k/2,j+k/2]←A[v+i,j] //沿对角线处理右下角 11. end for 12. end for 13. for i←k/2+1 to k 14. for j←1 to k/2 15. A[v+i-k/2,j+k/2]←A[v+i,j] //沿对角线处理右上角 16. end for 17. end for 18. end if 2、编制该问题的非递归算法,上机通过。 将如上文件保存在命名为“学号+姓名+实验一”的文件夹中并上传到指定的服务器。

包装工艺课程设计

饮品的包装设计与包装工艺规程制定 1 酸奶包装保护的基本要求与包装方案设计 1.1 酸奶包装保护的基本要求 1.1.1设计背景 酸牛奶,它是以新鲜的牛奶为原料,经过巴氏杀菌后再向牛奶中添加有益菌(发酵剂),经发酵后,再冷却灌装的一种牛奶制品。目前市场上酸牛奶制品多以凝固型、搅拌型和添加各种果汁果酱等辅料的果味型为多。酸牛奶不但保留了牛奶的所有优点,而且某些方面经加工过程还扬长避短,成为更加适合于人类的营养保健品。因此就对酸奶的包装工艺提出了要求。 设计要求:盒装;包装净重120ml,保质期15天;酸奶 ,年产量2万T. 1.1.2产品包装在流通使用过程中的影响因素 酸牛奶由纯牛奶发酵而成,除保留了鲜牛奶的全部营养成分外,在发酵过程中乳酸菌还可产生人体营养所必须的多种维生素,如VB1、VB2、VB6、VB12等。 因此影响酸奶保存的因素包括光线、氧气、温度、微生物等。所以在包装保存的过程中,需要特别注意的就是这些方面的因素。 同时,运输过程中的振动和挤压也可能造成产品的损坏。振动幅度过大,会使包装箱跌落,致使包装件相互挤压,可能会破坏包装。所以在包装完成后,要对运输包装件进行上述各种实验,以保证在运输过程中的损坏率在要求的范围。 1.1.3产品的包装要求 为了保证酸奶的口味和品质,根据酸奶在流通过程中的影响因素,选用的包装材料应该具有较好的阻热性,防振性,耐压性,阻气性以及阻湿性,而且在酸奶灌装和包装过程中都应该尽量在无菌的环境中进行,以保证饮品的安全无菌。

1.2酸奶包装保护方案设计 1.2.1酸奶的销售包装的定位 一般而言销售定位所需要考虑的因素有: 1.用户定位。针对不同用户层次并以这种层次去确立产品包装设计的不同定位及其设计方式,这是依据市场竞争的前提而不得不这样考虑的一种选择。 2.市场定位。因为任何事物都不是一成不变的,同样的市场在不同的时间段可能需求也是不一样的,因此时刻了解市场的需求是很有必要的。 3.价格定位。本产品有与其它同类产品相比独特的销售主张和独一无二的说辞,因为独特的主张具有实在的利益。同时价格也可根据实际情况而定。 1.2.2酸奶的包装方案设计 根据酸奶的包装要求,可以提出以下三种包装方案: 方案1:盒装。这种包装方式易于装箱、运输和存储。盒子是由纸、铝、塑组成的六层复合纸包装,能够有效阻隔空气和光线,延长饮品的保持期。这种包装主要适用于体积比较小的饮品的包装。 方案2:罐装。这种包装方式具有遮光性,热传导性,密封性好的特点,尤其是对密闭性要求比较严格的饮品具有很好的包装效果,比较适合于包装中等体积大小的饮品。 方案3:瓶装。这种包装方式透明度高且能够防紫外线,稳定性好,不易于其他物质发生反应,卫生安全性能好。主要适合于大体积的饮品包装。 比较这三种方案可以看出,考虑到此次设计要求为ml 120软包装,因此选择方案1,采用盒装的形式。 1.3酸奶包装的保存期计算 由酸奶包装保护方案可知产品的包装材料是由纸、铝、塑组成的六层复合纸包装,能

课程设计说明书书写格式

课程设计说明书书写格式 《模拟电子技术》课程设计说明书书写格式模拟电子技术》为了保证课程设计文档的质量,做到说明书格式的规范化,特作如下规定: 一,内容要求及格式课程设计说明书应用汉语撰写,内容应层次分明,数据可靠, 文字简练, 说明透彻,推理严谨. 说明书内容一般应由九个主要部分组成, 依次为:1. 封面,2. 课程设计任务书, 3. 目录, 4. 说明书正文,5. 结束语,6. 参考文献, 7. 附录. 各部分的具体要求如下:1.封面格式:XXXXXXXX学校课程设计说明书课题名称一———————专业名称————————学生班级————————学生姓名————————学生学号————————指导教师———————— 2. 课程设计任务书 3. 目录列出说明书的大标题, 一级和二级节标题,逐项标明页码, 标题应该简明扼要,点出各部分主要内容. " 目录"两字居中, 下空两行为章,节, 小节及其开始页码. 章,节, 小节分别以如下方式: 第 1 章,1.1,1.1.1 依次标出,章, 节,小节与页码之间用"..." 连接.每一... 级标题标题依次往后退一个汉字. 4. 说 明书正文正文是主体,一般可包括设计要求与指标, 理论分析, 计算方法, 具体设计内容,测试方法和实验结果,数据分析和讨论,结论等. 标题:每章标题以三号黑体居中打印; " 章"下空两行为"节"以四号黑体左起打印; " 节"下为"小节" , 以小四号黑体左起打印. 换行后空二个汉字打印论文正文. 正文采用小四号宋体, 正文行间距为固定值24磅.例:第1章XXXX 1. 1 XXXX 1.1.1 XXXX 图, 表,公式:文中的图,表公式一律采用阿拉伯数字分章编号,如:图2-5, 表3-2, 公式等.图序及图名居中置于图的下方,图中的术语,符号,单位等应与正文表述所用一致表序及表名置于表的上方,表中参数应标明量和单位的符号;图序及图名,表序及表名采用五号楷体字.公式的编号用括号括起写在右边行末,其间不加虚线. 图,表, 公式等与正文之间要有一定的行间距. 5. 结束语设计总结,主要成果或结论,存在的问题等 6. 参考文献只列作者直接阅读过, 在正文中被引用过的文献资料. 参考文献一律列在正文的末尾,不得放在各章之后.在引用别人的结论时,应在引用处加以说明,严禁抄袭现象的发生.作者姓名写到第三位,余者写",等"或",et al.."" 参考文献"四字居中用三号黑体字,空一行左起按顺序依次列出参考文献,将序号置于方括号内,用小四号宋体字. 几种主要参考文献的格式为: 连续出版物:序号作者. 文题.刊名[J],年,卷号:起~止页 码专或编著:序号作者.书名[M].出版地:出版社,出版年.起~止页码技术标准:序号发布单位.技术标准代号. 技术标准名称.出版地:出版者,出版日期举例如下: [1] 周绥平,陈宗基. DR 算法的更新时间间隔研究. 系统仿真学报[J],1999,7 :13~18 [2] 竺可桢.物理学[M].北京:科学出版社,1973.56~60 [3] 中华人民共和国国家技术监督局. GB3100~3102. 中华人民共和国国家标准—量与单位. 北京: 中国标准出版 社,1994-11-01 7. 附录主要列入设计过程所做的实物图,公式推导,与正文分开. 8.

相关主题
文本预览
相关文档 最新文档