- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM算法设计实验题目汇总
1020 Permutation with Repetition 11021 双色Hanoi塔问题Search Number41023 整数划分问题Counting6
1025 输油管道问题Integer Factorization9
1027 邮局选址问题矩阵连乘问题最长公共子序列MAX SUM16
1034 Number Triangles17
1035 编辑距离问题Pebble Merging19
1037 租用游艇问题Minimal m Sums22
1040 Knapsack Problem24
1041 最优装载Lecture Halls26
1043 程序存储问题Optimal Services30
1049 汽车加油问题1059 子集树问题1060 0-1 Knapsack33
1061 排列树问题1062 Problem D General Search 381020 Permutation with Repetition
Description
R={ r1,r2,… ,rn }是要进行排列的n 个元素。其中元素r1,r2,… ,rn可能相同。试设计一个算法,列出R的所有不同排列。 编程任务:给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。
Input
输入由多组测试数据组成。每组测试数据的第1 行是元素个数n,1 = n = 500。接下来的1 行是待排列的n 个元素。
Output
对应每组输入,将计算出的n 个元素的所有不同排列输出,每种排列单独一行。最后1 行中的数是排列总数。
Sample Input
4
aacc
Sample Output
aacc acac acca caac caca ccaa 6
#include stdio.h
#include algorithm
using namespace std ;
int ans ;
int ok(char str[],int a ,int b )
{if( b a)for(int i = a ; i b ; i++)if( str[i] == str[b] )return 0 ;return 1 ;
}
void perm(char str[],int k ,int m)
{int i ;if( k == m ){ans ++ ;for( i = 0 ;i = m ;i++ ){printf(%c,str[i] ) ;}printf(\n) ;}else{for( i = k ; i = m ;i++)if( ok(str,k,i) ){swap ( str[k],str[i] );perm(str, k+1 , m );swap(str[k],str[i] ) ;}}
}
int main(int argc, char* argv[])
{char str[1000];int n ;while( scanf(%d,n) != EOF ){ans = 0 ;scanf(%s,str ) ;perm(str,0,n-1) ;printf(%d\n,ans );}return 0;
}
1021 双色Hanoi塔问题Description
A、B、C 是3个塔座。开始时,在塔座A 上有一叠共n 个圆盘,这些圆盘自下而上, 由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着蓝色,偶数号圆盘着红色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则: 规则(1):每次只能移动1个圆盘; 规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则(3):任何时刻都不允许将同色圆盘叠在一起; 规则(4):在满足移动规则(1)-(3)的前提下,可将圆盘移至A,B,C 中任一塔座上。 试设计一个算法,用最少的移动次数将塔座A 上的n个圆盘移到塔座B 上,并仍按同样顺序叠置。 编程任务: 对于给定的正整数n,编程计算最优移动方案。
Input
输入由多组测试数据组成。每组测试数据的第1 行是给定的正整数n。
Output
对应每组输入,输出的每一行由一个正整数k和2 个字符c1 和c2 组成,表示将第k 个圆盘从塔座c1 移到塔座c2 上。
Sample Input
3
Sample Output
1 A B
2 A C
1 B C
3 A B
1 C A
2 C B
1 A B
#include iostream
using namespace std;
int main()
{ void hanoi(
您可能关注的文档
- 9柴油机.ppt
- a , 2011年北京市青少年业余体校武术散打锦标赛竞赛规程,.doc
- a,导言.ppt
- A.doc名字.doc
- a.积累与运用.doc
- A-062.ppt
- A053059刑事诉讼法学教学大纲.doc
- 9数学形态学.ppt
- a19-初中文言文复习-淮县署中寄舍弟墨第一书.pptx
- A032=第五章 第三节 等比数列及其前n项和.ppt
- 2026版创新设计高考总复习地理中图版教师用-第58课时 交通运输与区域社会经济发展.docx
- 2026版创新设计高考总复习地理中图版教师用-第71课时 南水北调对区域发展的影响.docx
- 2026版创新设计高考总复习地理中图版教师用-第81课时 环境保护与国家安全.docx
- 2026版创新设计高考总复习地理中图版教师用-第77课时 海洋空间资源与国家安全.docx
- 2026版创新设计高考总复习地理中图版教师用-第72课时 黄河流域内部协作.docx
- 教育硕士考前冲刺练习含答案详解【达标题】.docx
- 教育硕士经典例题附答案详解【考试直接用】.docx
- 教育硕士综合提升测试卷附参考答案详解(完整版).docx
- 教育硕士题库附参考答案详解【黄金题型】.docx
- 教育硕士预测复习最新附答案详解.docx
文档评论(0)