Ex3-23 亲兄弟问题 « 问题描述: 给定n 个整数0 1 1 , , , n- a a a 组成的序列。序列中元素i a 的亲兄弟元素k a 定义为: min{ | } k i j n j j i a = a a ³ a < < 。 亲兄弟问题要求给定序列中每个元素的亲兄弟元素的位置。元素i a 的亲兄弟元素为k a 时,称k 为元素i a 的亲兄弟元素的位置。当元素i a 没有亲兄弟元素时,约定其亲兄弟元素 的位置为-1。 例如,当n=10,整数序列为6,1,4,3,6,2,4,7,3,5 时,相应的亲兄弟元素位 置序列为:4,2,4,4,7,6,7,-1,9,-1。 « 编程任务: 对于给定的n个整数0 1 1 , , , n- a a a 组成的序列,试用抽象数据类型栈,设计一个O(n) 时间算法,计算相应的亲兄弟元素位置序列。 « 数据输入: 由文件input.txt提供输入数据。文件的第1 行有1 个正整数n,表示给定给n个整数。 第2 行是0 1 1 , , , n- a a a 。 « 结果输出: 程序运行结束时,将计算出的与给定序列相应的亲兄弟元素位置序列输出到output.txt 中。 输入文件示例 输出文件示例 input.txt 10 4 2 4 4 7 6 7 -1 9 -1 output.txt 6 1 4 3 6 2 4 7 3 5
上传时间: 2013-12-17
上传用户:shizhanincc
Ex4-22 单射函数问题 « 问题描述: 设函数f将点集S = {0,1, , n -1}映射为f (S) = { f (i) | iÎ S} Í S 。单射函数问题要 从S中选取最大子集X Í S 使f (X )是单射函数。 例如,当n=7, f (S) = {1,0,0,2,2,3,6} Í S 时, X = {0,1,6} Í S 是所求的最大子集。 « 编程任务: 对于给定的点集S = {0,1, , n -1}上函数f,试用抽象数据类型队列,设计一个O(n)时 间算法,计算f的最大单射子集。 « 数据输入: 由文件input.txt 提供输入数据。文件的第1 行有1 个正整数n,表示给定的点集 S = {0,1, , n -1}。第2 行是f (i)的值,0 £ i < n。 « 结果输出: 程序运行结束时,将计算出的f的最大单射子集的大小输出到output.txt中。 输入文件示例 输出文件示例 input.txt 7 1 0 0 2 2 3 6 output.txt 3
上传时间: 2016-05-28
上传用户:tyler
给定m个n维向量a , a , ,am 1 2 ,向量分类问题要求将相同的向量划分为同一类。试用 抽象数据类型表设计解向量分类问题的有效算法。
上传时间: 2016-06-11
上传用户:lps11188
给定m个n维向量a , a , ,am 1 2 ,向量分类问题要求将相同的向量划分为同一类。试用 抽象数据类型表设计解向量分类问题的有效算法。
上传时间: 2013-12-16
上传用户:古谷仁美
1) 以二叉链表为存储结构,写出建立二叉树、先序(中序、后序)遍历二叉树、求二叉树节点总数、叶子数、树高度的算法。 完成队列抽象数据类型的顺序、链式表示与实现。并对上面建立的二叉树按层次遍历。
标签: 存储结构
上传时间: 2016-08-22
上传用户:yepeng139
创建两个生产者进程和两个消费者进程,生产者进程a需要生成10000个整数,每次都将自己的进程号(用getpid()函数获得)和生成的整数放入共享内存中(共享内存大小为64Byte)。生产者b每次从26个英文字母中选一个,并将自己的进程号和选中的字母放入共享内存中,直到26个字母全部都选中。消费者进程c负责从共享内存中读取数据生产者进程a的数据并且将这些数据写入文件a.out。消费者进程d从共享内存读取进程b的数据后写入b.out中。
标签: 进程
上传时间: 2014-01-24
上传用户:王者A
函数程序设计haskell的作业,实现一个抽象数据类型tree模块
上传时间: 2017-08-16
上传用户:王小奇
一、问题描述若要在n个城市之间建役通信网络,只福要架设n-1条级路即可.如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。二、基本要求 (1)利用克鲁斯卡尔算法求图的最小生成树。 (2)能实现教科书6.5节中定义的抽象数据类型MFSet.以此表示构造生成树过程中的连通分量。 (3 ) 以文本形式输出生成树中各条边以及他们的权值.三、需求分析 1、构造图结构。 2、利用克鲁斯卡尔算法求图的最小生成树。 3、完成生成树的输出。
上传时间: 2017-08-24
上传用户:wlcaption
内容从数据结构的基本原 理到面向对象程序设计的方法。书内使用适应面极广的C++语言。 1绪论;2基本数据类型;3抽象数据类型与类;4. 集合类;5栈与队列;6.抽象运算符;7.类属数据类型;8.类与动态 存储;9链表;10递归;11树;12继承与抽象类;13先进的非线 性结构;14构建集合。
标签: c++学习视频教程
上传时间: 2015-06-14
上传用户:plancking
我们编写的程序由两个主要方面组成 1 算法的集合就是将指令组织成程序来解决某个特定的问题 2 数据的集合算法在这些数据上操作以提供问题的解决方案 纵观短暂的计算机发展史这两个主要方面算法和数据一直保持不变发展演化的 是它们之间的关系就是所谓的程序设计方法programming paradigm 在过程化程序设计方法procedural programming 中一个问题可直接由一组算法来建 立模型例如公共图书馆的资料借阅/登记check out/check in 系统是由一系列过程表现 出来的其中两个主要的过程是资料的借阅和登记这些数据被独立存储起来我们既可以 在某个全局位置上访问这些数据或者把数据传递给过程以便它能够访问这些数据Fortran C 和 Pascal 是三种著名的过程语言C++也支持过程化程序设计单独的过程如check_in() check_out() over_due() fine()等等都被称为函数第三篇将集中讨论C++对过程化程序 设计方法的支持尤其将重点讨论函数函数模板和通用算法 在20 世纪70 年代程序设计的焦点从过程化程序设计方法转移到了抽象数据类型 abstract data type 简写为ADT 的程序设计上现在通常称之为基于对象(object based 的程序设计在基于对象的程序设计方法中我们通过一组数据抽象来建立问题的模型在 C++中我们把这些抽象称为类class 例如在这种方法下图书馆资料借阅登记系统就 由类的对象实例比如书借阅者还书时间罚款等之间的相互作用表现出来以此表 示出图书馆的抽象概念与每个类相关的算法被称为该类的公有接口public interface 数 据以私有形式被存储在每个对象中对数据的访问应与一般的程序代码隔离开来CLU Ada 和Modula-2 是三种支持抽象数据类型的程序设计语言第四篇将说明和讨论C++对抽象数据 类型程序设计方法的支持 面向对象的程序设计方法通过继承inheritance 机制和动态绑定dynamic binding 机 制扩展了抽象数据类型继承机制是对现有实现代码的重用动态绑定是指对现有的公有接 口的重用以前独立的类型现在有了类型/子类型的特定关系一本书一盒录像带一段录 音甚至孩子的宠物尽管它们有各自的借阅/登记方式但都可以成为图书馆的收藏资料 共享的公有接口和私有的数据都放在一个抽象类图书馆资料LibraryMaterial 中每个特 殊的图书馆资料类都从LibraryMaterial 抽象类继承共享的行为它们只需要提供与自身行为相 关的算法和数据Simula Smalltalk 和Java 是三种支持面向对象程序设计方法的著名语言 第五篇将集中讨论C++对面向对象程序设计方法的支持 C++是一种支持多种程序设计方法的语言虽然我们主要把它当作面向对象的语言但 实际上它也提供对过程化的和基于对象的程序设计方法的支持这样做的好处是对每个问题 都能够提供最合适的解决方案事实上没有一种程序设计方法能够
上传时间: 2019-01-30
上传用户:jizhi111