acm搜索入门.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
acm搜索入门 知识点:函数,vis数组,递归,栈,队列,DFS,BFS 定义函数的格式 返回类型 函数名(各种参数){ /*函数内容*/ } 函数的优势:减小思维,程序模块化,程序可读性更高,可代替重复部分,可实现递归操作(!!!!!) 写一个函数,来实现数学公式y=|x| double f(double x){ if(x0) return -x; return –x; } 函数需要多个参数? 写一个函数,求两个点的距离. double dist(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } 写一个函数,判断一个正整数是否是质数 bool is_prime(int x){ if(x2) return false; int i; for(i=2;i*i=x;i++){ if(x%i==0) return false; } return true; } 函数的优越性 输出1~100之间的所有质数 没学函数之前一般是怎么写的.? int i,j,flag; for(i=2;i=100;i++){ flag=1;//表示默认为质数 for(j=2;j*j=i;j++){ if(i%j==0){ flag=0;//标记为不是质数 break;//跳出循环 } } if(flag){ printf(%d ,i); } } 能否一眼看懂这份代码? 调用了函数以后 #includestdio.h bool is_prime(int x){ if(x2) return false; int i; for(i=2;i*i=x;i++){ if(x%i==0) return false; } return true; } int main(){ int i; for(i=1;i=100;i++){ if(is_prime(i)) printf(%d ,i); } return 0; } 只要我的is_prime函数写对了,那么main函数就能很轻松的写出来 给一个正整数n,判断n,n+5,n+7是否都为质数 如果不用函数,不用数组(当然其实这里如果用数组很简单→_ →),那份代码就会显得十分的繁杂 (为什么会很繁杂?) 函数的优势-化繁为简 当然也没这种必要…… 你觉得哪样写更符合你的习惯,哪样写更舒服,就是最好的,毕竟ACM不像作业那样对方法都有着严格的要求,ACM只要求在限定的时间内给出正确答案,不择手段~ 函数简单的递归 递归求阶乘 int func(int x){ if(x==1) return 1; else return x*func(x-1); } 递归求斐波那契数列 int fab(int x){ if(x==1||x==2) return 1; else return fab(x-1)+fab(x-2); }//虽然这不是个好写法.. 比较复杂的递归程序 void func(int x){ if(x2) printf(%d,x); else{ func(x/2); func(x%2); } } 引入新概念 时间复杂度:它定量描述了该算法的运行时间。 (通俗的讲,程序里面代码一共运行了多少行) 空间复杂度:是对一个算法在运行过程中临时占用存储空间大小的量度 (通俗的讲,数组开了多大) 数据范围决定了算法,算法决定了时间复杂度和空间复杂度 常见的时间复杂度:O(n),O(nlogn),O(n^2)… 在一个长度为len的A数组里面找到最大的数字 int maxx=A[0],i; for(i=1;ilen;i++){ maxx=A[i]maxx?A[i]:maxx; } printf(%d\n,maxx); 这个只循环了一个len,所以复杂度就是O(len) 为何要讨论复杂度? 计算机运行速度是有极限的,1秒极限只能运行1000W行代码,oj给定开int数组极限一般是1000W左右。当接近这个极限就要很小心了。 题:先给定一个n,然后给这n个密

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档