- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM算法设计实验题目汇总
1020 Permutation with Repetition 1
1021 双色Hanoi塔问题 3
1022 Search Number 4
1023 整数划分问题 5
1024 Counting 6
1025 输油管道问题 8
1026 Integer Factorization 9
1027 邮局选址问题 11
1031 矩阵连乘问题 13
1032 最长公共子序列 14
1033 MAX SUM 16
1034 Number Triangles 17
1035 编辑距离问题 18
1036 Pebble Merging 19
1037 租用游艇问题 21
1038 Minimal m Sums 22
1040 Knapsack Problem 24
1041 最优装载 25
1042 Lecture Halls 26
1043 程序存储问题 29
1048 Optimal Services 30
1049 汽车加油问题 30
1059 子集树问题 32
1060 0-1 Knapsack 33
1061 排列树问题 36
1062 Problem D General Search 38
1020 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 ;
文档评论(0)