资源预览内容
第1页 / 共76页
第2页 / 共76页
第3页 / 共76页
第4页 / 共76页
第5页 / 共76页
第6页 / 共76页
第7页 / 共76页
第8页 / 共76页
第9页 / 共76页
第10页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
ACM 程序设计1第一讲ACM入门2第一部分初识ACM3ACM (Association for Computing Machinery)成立于计算机诞生次年,是目前计算机 学界中历史最悠久、最具权威性的组织 What is ACM ?4我们说的“ACM” 是什么?5ACM/ICPC:ACM主办的国际大学生程序设计竞赛 (International Collegiate Programming Contest),简 称ACM / ICPC,自从1977年开始至今已经连 续举办31届。其宗旨是提供一个让大学生向IT 界展示自己分析问题和解决问题的能力的绝好 机会,让下一代IT天才可以接触到其今后工作 中将要用到的各种软件。现在,ACM / ICPC已成为世界各国大学生中 最具影响力的国际计算机赛事。(非官方)67如何比赛? 3人组队 可以携带诸如书、手册、 程序清单等参考资料 ;不能携带任何可用计算机处理的软件或数据、 不能携带任何类型的通讯工具; 可能收到的反馈信息包括: Compile Error - 程序不能通过编译。 Run Time Error - 程序运行过程中出现非正常中断。 Time Limit Exceeded - 运行超过时限还没有得到输出结果。 Wrong Answer - 答案错误。 Presentation Error - 输出格式不对,可检查空格、回车等等细节。 Accepted - 恭喜恭喜! 8首先根据解题数目进行排名。 如果多支队伍解题数量相同,则根据总用时 加上惩罚时间进行排名。 总用时和惩罚时间由每道解答正确的试题的 用时加上惩罚时间而成。 每道试题用时将从竞赛开始到试题解答被判 定为正确为止,其间每一次错误的运行将被 加罚20分钟时间,未正确解答的试题不记时 。如何排名?9l比赛形式 1支队伍1台机器(提供打印服务)上机编程解决问题(可带纸质资料) 实时测试,动态排名l试题 6-10题全英文(可以带字典)l时间:持续5个小时10ACM队队员的基本原则l基本要求 人品好 愿意花时间在这项赛事上 有团队合作精神l能力要求 程序设计 英语科技文献阅读 数学数学11放松完毕 回到正题12开课目的 提高分析问题和应用计算机编程 解决问题的能力 培养必要的自学能力 培养学生的协调和沟通能力 体会学习的快乐13如何入门呢?14ACM题目特点:由于ACM竞赛题目的输入数据和输出数 据一般有多组(不定),并且格式多 种多样,所以,如何处理题目的输入 输出是对大家的一项最基本的要求。 这也是困扰初学者的一大问题。下面,分类介绍:15先看一个超级简单的题目:lhttp:/acm.hdu.edu.cn/showproblem.php? pid=1089lSample input:l1 5l10 20lSample output:l6l3016初学者很常见的一种写法:l#includelvoid main()l int a,b; scanf(“%d %d”, Printf(“%d”,a+b);l17有什么问题呢?这就是下面需要解决的问题18第二部分基本输入输出19输入_第一类:l输入不说明有多少个Input Block,以 EOF为结束标志。 参见:HDOJ_1089lhttp:/acm.hdu.edu.cn/showproblem.php? pid=108920Hdoj_1089源代码:#include int main() int a,b;while(scanf(“%d %d“, 21本类输入解决方案:lC语法: while(scanf(“%d %d“, 如果只有一个整数输入,返回值是1, 如果有两个整数输入,返回值是2,如 果一个都没有,则返回值是-1。lEOF是一个预定义的常量,等于-1。23输入_第二类:l输入一开始就会说有N个Input Block,下 面接着是N个Input Block。 参见:HDOJ_1090 lhttp:/acm.hdu.edu.cn/showproblem.php? pid=109024Hdoj_1090源代码:#include int main() int n,i,a,b;scanf(“%d“, for(i=0;i n; for( i=0 ; iint main() int a,b;while(scanf(“%d %d“, 上面的程序有什么问题?28本类输入解决方案:lC语法: while(scanf(“%d“, gets(buf); lC+语法: 如果用string buf;来保存:getline( cin , buf ); 如果用char buf 255 ; 来保存: cin.getline( buf, 255 );32说明(5_1):lscanf(“ %s%s”,str1,str2),在多个字符串 之间用一个或多个空格分隔;l若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔 。l通常情况下,接受短字符用scanf函数, 接受长字符用gets函数。l而getchar函数每次只接受一个字符,经 常c=getchar()这样来使用。 33说明(5_2):cin.getline的用法:lgetline 是一个函数,它可以接受用户的输入的字符 ,直到已达指定个数,或者用户输入了特定的字符 。它的函数声明形式(函数原型)如下: istreaml不用管它的返回类型,来关心它的三个参数:lchar line: 就是一个字符数组,用户输入的内容 将存入在该数组内。lint size : 最多接受几个字符?用户超过size的输入都 将不被接受。lchar endchar :当用户输入endchar指定的字符时,自 动结束。默认是回车符。34说明(5_2)续l结合后两个参数,getline可以方便地实 现: 用户最多输入指定个数的字符, 如果超过,则仅指定个数的前面字符 有效,如果没有超过,则用户可以通 过回车来结束输入。lchar name4;lcin.getline(name,4,n);l由于 endchar 默认已经是 n,所以后 面那行也可以写成:lcin.getline(name,4);35思考: 以下题目属于哪一类输入?lhttp:/acm.hdu.edu.cn/showproblem.php? pid=1018lhttp:/acm.hdu.edu.cn/showproblem.php? pid=101336输出_第一类:l一个Input Block对应一个Output Block ,Output Block之间没有空行。 参见:HDOJ_1089lhttp:/acm.hziee.edu.cn/showproblem.ph p?pid=108937解决方案:lC语法: printf(“%dn“,ans); lC+语法: . cout int main() int a,b;while(scanf(“%d %d“, 40解决办法:lC语法: printf(“%dnn“,ans); lC+语法: . cout l int main() l l int icase,n,i,j,a,sum; l scanf(“%d“, l for(i=0;i #include int main() int j=0; for(j=0;j int gcd(int, int) ; Int main() int x,y;while(cinxy)cout int gcd(int, int) ; Int main() int x,y;while(cinxy)couty) x=x- y; else y=y-x; return x; 只要两数不相等,就反复用 大数减小数,直到相等为止 , 此相等的数就是两数的最大 公 约数。591021 Fibonacci Again 60lProblem DescriptionThere are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n=2). lInputInput consists of a sequence of lines, each containing an integer n. (n int main() long n;while(scanf(“%ld“,elseprintf(“non“);return 0; 64POJ 2750 鸡兔同笼lhttp:/poj.grids.cn/problem?id=275065lProblem Description一个笼子里面关了鸡和兔子(鸡有2只脚 ,兔子有4只脚,没有例外)。已经知道了 笼子里面脚的总数a,问笼子里面至少有多 少只动物,至多有多少只动物。 lInput第1行是测试数据的组数n,后面跟着n行 输入。每组测试数据占1行,每行一个正整 数a (a void main() int nCases,I,nFeet; /InCases表示输入测试数据的组 数,nFeet表示输入的脚数scanf(“%d”,j i总结-练习-总结-lhttp:/acm.hdu.edu.cnl杭电ACM论坛 lgoogle、baidu74http:/acm.hdu.edu.cn/去哪里练习?75课后任务:1、熟悉http:/acm.hdu.edu.cn 2、完成在线练习: ACM ProgrammingExercise(1) 3、学有余力,可以尝试下面题目: 1016-1018、1013、1061 1170、2000-204376
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号