算法实训题目(5)

2019-03-28 09:01

4 aacc

Sample Output aacc acac acca caac caca ccaa 6

排列的字典序问题

Time limit: 1000MS Memory limit: 32768K

Total Submit: 18 Accepted: 16

问题描述:

, n?n个元素{1,2, }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,

n!-1。每个排列的编号为其字典序值。例如,当n=3时,6 个不同排列的字典序值如下:

字典序值 0 1 2 3 4 5 排列 123 132 213 231 312 321

算法设计:

, n }的一个排列,计算出这个排列的字典序值,以及按字典?给定n以及n个元素{1,2,

序排列的下一个排列。

数据输入:

输出元素个数n。接下来的1 行是n个元素 , n }的一个排列。?{1,2,

结果输出:

将计算出的排列的字典序值和按字典序排列的下一个排列输出。第一行是字典序值,第2行是按字典序排列的下一个排列。 Sample Input 8

2 6 4 5 8 1 7 3 Sample Output 8227

2 6 4 5 8 3 1 7

集合划分问题I

Time limit: 1000MS Memory limit: 32768K

Total Submit: 14 Accepted: 2

问题描述:

, n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,?n个元素的集合{1,2,

3,4}可以划分为15 个不同的非空子集如下: {{1},{2},{3},{4}}, {{1,2},{3},{4}}, {{1,3},{2},{4}}, {{1,4},{2},{3}}, {{2,3},{1},{4}}, {{2,4},{1},{3}}, {{3,4},{1},{2}}, {{1,2},{3,4}}, {{1,3},{2,4}}, {{1,4},{2,3}}, {{1,2,3},{4}}, {{1,2,4},{3}}, {{1,3,4},{2}}, {{2,3,4},{1}}, {{1,2,3,4}}

算法设计:

, n }可以划分为多少个不同的非空子集。?给定正整数n,计算出n个元素的集合{1,2,

数据输入:

输入数据第1 行是元素个数n。 结果输出:

将计算出的不同的非空子集数输出. Sample input 5

Sample output 52

集合划分问题II

Time limit: 1000MS Memory limit: 32768K

Total Submit: 8 Accepted: 5

问题描述:

, n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,?n个元素的集合{1,2,

3,4}可以划分为15 个不同的非空子集如下: {{1},{2},{3},{4}}, {{1,2},{3},{4}}, {{1,3},{2},{4}}, {{1,4},{2},{3}}, {{2,3},{1},{4}}, {{2,4},{1},{3}}, {{3,4},{1},{2}}, {{1,2},{3,4}}, {{1,3},{2,4}}, {{1,4},{2,3}}, {{1,2,3},{4}}, {{1,2,4},{3}}, {{1,3,4},{2}},

{{2,3,4},{1}}, {{1,2,3,4}}

其中,集合{{1,2,3,4}}由1 个子集组成;集合{{1,2},{3,4}},{{1,3},{2,

4}},{{1,4},{2,3}},{{1,2,3},{4}},{{1,2,4},{3}},{{1,3,4},{2}},{{2,

3,4},{1}}由2 个子集组成;集合{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},

{2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{1},{2}}由3 个子集组

成;集合{{1},{2},{3},{4}}由4 个子集组成。

算法设计:

, n }可以划分为多少个不同的由m?给定正整数n 和m,计算出n 个元素的集合{1,2,

个非空子集组成的集合。

数据输入:

输入的第1 行是元素个数n和非空子集数m。 结果输出:

将计算出的不同的由m个非空子集组成的集合数输出。 Sample input 4 3

Sample output 6

半数单集问题

Time limit: 1000MS Memory limit: 32768K

Total Submit: 11 Accepted: 4

问题描述:

给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n);

(2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;

(3) 按此规则进行处理,直到不能再添加自然数为止。

例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集不是多重集。集合中已经有的元素不再添加到集合中。 算法设计:

对于给定的自然数n,计算半数集set(n)中的元素个数。 数据输入: 给出整数n。(0

结果输出:

给出半数集set(n)中的元素个数。 Sample input 6

Sample output 6

双色Hanoi塔问题

Time limit: 1000MS Memory limit: 32768K

Total Submit: 44 Accepted: 22

问题描述:

设A、B、C是3 个塔座。开始时,在塔座A上有一叠共n个圆盘,这些圆盘自下而上,

由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着红色,偶数号

圆盘着蓝色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序

叠置。在移动圆盘时应遵守以下移动规则: 规则(1):每次只能移动1 个圆盘;

规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则(3):任何时刻都不允许将同色圆盘叠在一起;

规则(4):在满足移动规则(1)-(3)的前提下,可将圆盘移至A,B,C中任一塔座上。


算法实训题目(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:每年产2.25万吨铜杆连铸连轧生产装置项目建设可行性研究报告可研

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: