博文

http://acm.pku.edu.cn/course/,关于问题求解的好网址(2006-10-10 10:08:00)

摘要:http://acm.pku.edu.cn/course/......

阅读全文(2931) | 评论:0

问题求解 与 程序设计(2006-10-10 10:04:00)

摘要: ·课程概要 开课单位:信息科学技术学院课程编号:00831630课程名称:问题求解与程序设计课程类型:全校通选课学时学分:学分2.0,总34学时先修课程:计算概论授课时间:周二9-10节授课教室:电教125主讲教师:李文新助    教:hawking,赵静 ·最新通知 (5.26) 期末考试安排:5月29日上午9:00至11:00,计算中心4号机房(4.27) 参考书目:《程序设计基础》,吴文虎 著,清华大学出版社,2003       《计算机程序的构造与解释》,裘宗燕 译,机械工业出版社,2004 (4.04) 开始提交出题作业,好的题目将推荐给POJ月赛(3.10) 一旦被采纳,即可获得奖金!@_@(3.22) 总完成题数即时排名(3.10) 上机安排:周日中午12:30至2:30,计算中心4号机房(3.10) 公用帐号:jtx75-6:jsjtxk@student6(3.10) 上机内容:网上练习赛(2.17) 觉得课程太难的同学请看这里 ·课程内容 周次 主题 相关材料和链接 作业 第一周(2.10) 引言 题目1:1326 Mileage Bank题目2:1148 Utopia Divided 10051006 第二周(2.17) 对局问题 张一飞解题报告:一类博弈问题的解答过程 10081013 第三周(2.24) 称球问题 1008参考程序 1013参考程序Conqueror's batalion: Task Solution 10161048 第四周(3.2) 模拟问题 1016参考程序 1048参考程序 12071028 第五周(3.9) 问题抽象 1147 Binary codes 1063 第六周(3.16) 动态规划(1) A Decorative Fence: Solution 10141037 第七周(3.23) 搜索 王知昆解题报告:搜索顺序的选择 10111054(选) 第八......

阅读全文(3653) | 评论:0

阳光奥赛(www.noi3000.com),好网站(2006-08-15 21:47:00)

摘要:阳光奥赛(www.noi3000.com) ---------算法部分--------转自:http://www.noi3000.com/ShowClass2.asp?ClassID=4---------  [图文]图论的意义 (noi3000,2006年4月27日,192) 程序设计中几何算法二 (noi3000,2006年4月17日,108) 程序设计中几何算法一 (noi3000,2006年4月17日,129) 汉诺塔问题 (noi3000,2006年3月13日,478) 八皇后问题 (noi3000,2006年3月13日,298) 算法设计(动态规划法) (noi3000,2006年3月13日,142) 算法设计(分治法) (noi3000,2006年3月13日,198) 算法设计(贪婪法) (noi3000,2006年3月13日,149) 算法设计(回溯法2) (noi3000,2006年3月13日,140) 算法设计(回溯法1) (noi3000,2006年3月13日,200) 算法设计(递归法) (noi3000,2006年3月12日,154) 算法设计(递推法) (noi3000,2006年3月12日,53) 算法设计(穷举搜索法) (noi3000,2006年3月12日,63) 算法设计(迭代法) (noi3000,2006年3月12日,69) 基本算法讲座之数学篇 (noi3000,2006年3月5日,76) 排序算法简要说明 (佚名,2005年11月7日,88) 什么是算法 (cz1800,2005年11月7日,108) ----------------------------------------------------------------------......

阅读全文(3360) | 评论:0

二分法查找(转)(2006-08-15 21:34:00)

摘要:作者tag:c/c++ CSDN 推荐tag:web   二分法——查找、排序以及库函数bsearch的用法 http://student.zjzk.cn/course_ware/data_structure/web/chazhao/chazhao9.2.2.1.htm 二分法查找 1、二分查找(Binary Search)     二分查找又称折半查找,它是一种效率较高的查找方法。     二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。 2、二分查找的基本思想     二分查找的基本思想是:(设R[low..high]是当前的查找区间) (1)首先确定该区间的中点位置:                  (2)然后将待查的K值与R[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找,具体方法如下:     ①若R[mid].key>K,则由表的有序性可知R[mid..n].keys均大于K,因此若表中存在关键字等于K的结点,则该结点必定是在位置mid左边的子表R[1..mid-1]中,故新的查找区间是左子表R[1..mid-1]。     ②类似地,若R[mid].key<K,则要查找的K必在mid的右子表R[mid+1..n]中,即新的查找区间是右子表R[mid+1..n]。下一次查找是针对新的查找区间进行的。     因此,从初始的查找区间R[1..n]开始,每经过一次与当前查找区间的中点位置上的结点关键字的比较,就可确定查找是否成功,不成功则当前的查找区间就缩小一半。这一过程重复直至找到关键字为K的结点,或者直至当前的查找区间为空(即查找失败)时为止。 3、二分查找算法    int BinSearch(Se......

阅读全文(4058) | 评论:0

《C程序设计》第七章算法之排序算法(2006-04-30 21:45:00)

摘要:排序算法总结     在第七章《数组》中涉及到选择法排序以及冒泡法排序,排序算法在《C程序设计》中的位置还是挺重要的。今天我们来总结一下排序算法。   一、交换法。   在前段时间,我们已经学过了对两个数或者三个数进行排序。用的方法是交换法。 交换法的原理是:要交换a,b杯的水,要借助空杯cup,先把a杯的水倒入cup中,此时a空,再把b杯中的水倒入a中,此时b空,最后把cup中的水倒入b中,实现a,b杯水的交换。 例如,要使a,b两个数由小到大排列。 if(a>b){ cup=a;a=b;b=cup;}   要使a,b,c由小到大排列。 if(a>b){cup=a;a=b;b=cup;} if(a>c){cup=a;a=c;c=cup;} if(b>c){cup=b;b=c;c=cup;}   二、选择法排序。   其原理是:从数据中选择最小的同第一个值交换,在从省下的部分中 选择最小的与第二个交换,这样往复下去。   交换法 选择法 for(i=1;i<=9;i++) for(j=i+1;j<=10;j++) if(a[i]>a[j])  {temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=1;i<=9;i++) {  min=i; for(j=i;j<=10;j++)   if(a[min]>a[j])min=j;   temp=a[i];   a[i]=a[min]   a[min]=temp; }         三、冒泡法排序,也叫起泡法排序。   冒泡法排序的思路是:将相邻两个数比较,将小的调到前头(由小到大排)。 若有n个数,则有进行n-1趟比较。 在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次比较。 请看下图: 如上图:6个数排序,由小到大排序。 第一趟(9-8-5-4-2-0),相邻两个数经过5次两两比较,前一个数比后一个数......

阅读全文(4964) | 评论:1

《C程序设计》第五章第六章算法总结(2006-04-27 20:35:00)

摘要:第五章 选择结构 1. 求闰年    判别某一年year是否为闰年。条件是:    能被4整除,但不能被100整除;能被400整除。    if((year%4==0&year%100!=0)||(year%400)==0)printf("%d is a leap year",year);elseprintf("%d is not a leap year",year);   2. 交换法    空杯原理:要交换a、b杯的水,要借助第三个杯cup,先把a杯的水倒入到cup中,此时a空,再把b杯的水倒入a中,此时b空,最后把cup中的水倒入b杯,这样就实现了a、b杯水的交换。 例1:按代数值由小到大次序输出两个数。 if(a>b) {cup=a;a=b;b=cup;}      例2:求三个数a,b,c由小到大顺序输出。    用交换法,算法是,使最小值赋值给a,第二小赋值给b,最大值赋值给c。    所以a 先与b 比较,如果a>b,就交换它们的值;然后a与c比较,如果a>c就互换。这两个步骤得到a最小。最后比较b和c,如果b>c,就交换它们的值。 if(a>b) {cup=a;a=b;b=cup;}if(a>c) {cup=a;a=c;c=cup;}if(b>c) {cup=b;b=c;c=cup;}   /* 这样,书本上的习题“输入四个整数,要求按由大小顺序输出。”就难不倒你了。 */     第六章 循环控制 1. 累加(循环应用一)    如书本上的例题:1+2+3+……+100    定义两个变量:sum存累加和;i为每一次循环的加数。    变量初始值:sum=0;i=1;    每次循环结束前,要计算下一次i的值。    While(i<=100)    { sum=sum+i; /*sum存累加和*/    ......

阅读全文(2987) | 评论:0