(mooc)第11章数据结构与算法重点分析.ppt

(mooc)第11章数据结构与算法重点分析.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例11-4】测试vector中的reverse(反序)和sort(排序)算法 #includeiostream #includevector //使用vector需要 #includealgorithm //使用sort, reverse算法需要 using namespace std; int main() { vectorint v(10); //定义向量v int i; for(i=0;i10;i++) v[i]=i; //赋值为0,1,2,...,9 for(i=0;i10;i++) coutv[i] ; coutendl; reverse(v.begin()+2,v.end()); vectorint::iterator it; for(it=v.begin();it!=v.end();it++) cout*it ; coutendl; sort(v.begin(),v.end()); for(it=v.begin();it!=v.end();it++) cout*it ; return 0; } 【运行结果】 0 1 2 3 4 5 6 7 8 9 0 1 9 8 7 6 5 4 3 2 0 1 2 3 4 5 6 7 8 9 【程序说明】 算法reverse和sort的形式如下: reverse(First, Last) 将[First,Last)之间的元素反序 sort( First, Last) 将[First,Last)之间的元素排序 stack(栈) 加入下列语句: #includestack 栈的常用算法有: push(elem) 将元素elem入栈 pop() 栈顶元素出栈 top() 求栈顶元素 empty() 判断栈是否空 size() 求栈内元素个数 测试stack容器中的各种算法 #includeiostream #includestack using namespace std; int main() { stackint s; //定义栈 s s.push(1); s.push(2); s.push(3); s.push(9); //入栈过程 cout栈顶元素:s.top()endl; //读栈顶元素 cout元素数量:s.size()endl; //返回元素个数 cout出栈过程:; while(s.empty()!=true) //栈非空 { couts.top() ; //读栈顶元素 s.pop(); //出栈,删除栈顶元素 } return 0; } 【运行结果】 栈顶元素:9 元素数量:4 出栈过程:9 3 2 1 queue(队列) 加入下列语句: #includedeque 队列的常用算法有: push() 入队 pop() 出队 front() 读取队首元素 back() 读取队尾元素 empty() 判断队列是否空 size() 求队列长度 常见算法策略:枚举法 (1)建立问题的数学模型,确定问题的可能解的集合(可能解的空间)。 (2)确定合理的筛选条件,用来选出问题的解。 (3)确定搜索策略,逐一枚举可能解集合中的元素,验证是否是问题的解。 设解的个数n初始为0; 循环(枚举每一可能解): 若( 该解法满足约束 ) : 输出这个解; 解的数量n加1; 【例11-6】八皇后问题 在8×8的国际象棋棋盘上放置八个皇后,求出满足下列条件的摆放方法数量:使得任意两个皇后都不在同一行,或同一列或同一对角线上。如图所示就是八皇后问题的一个正确摆法(即一个解)。 算法描述: r?0; //存放解的数目 循环(令y[1]从 1 到 8): //放置第1行棋子 循环(令y[2]从 1 到 8): //放置第2行棋子 循环(令y[3]从 1 到 8): //放置第3行棋子 循环(令y[4]从 1 到 8): //放置第4行棋子 循环(令y[5]从 1 到 8): //放置第5行棋子 循环(令y[6]从 1 到 8): //放置第6行棋子 循环(令y[7]从1 到 8): //放置第7行棋子 循环(令y[8]从1 到 8)://放置第8行棋子 //判断有没有两个棋子在同列或同一对角线上 flag?1; //先假设本方案是解 循环( 令i 从1 到 8 ) :

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档