| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖
标题:[转帖]排列
取消只看楼主 加入收藏
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
 问题点数:0 回复次数:2 
[转帖]排列

【background】 输入n,(1<=n<=20)要求输出 n^n 个 每个长度为n的所有通过乘法原理所列举出的排列。 比如n为2时 1---1 | X | 2---2 即要求按行输出 11 12 21 22

【sample input】 3 【sample output】 111 112 113 121 122 123 131 132 133 211 212 213 221 222 223 231 232 233 311 312 313 321 322 323 331 332 333

搜索更多相关主题的帖子: 排列 转帖 
2005-01-03 20:41
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
得分:0 
以下是引用fjb在2005-1-3 21:14:01的发言: #include<stdio.h> void main() { int i,j,m,p; printf("请输入你要求的数:"); scanf("%d",&p); for(i=1;i<=p;i++) for(j=1;j<=p;j++) for(m=1;m<=p;m++) printf("%d%d%d\n",i,j,m); }
程序只适用于n等于3一种情况,不符合题目要求。

2005-01-04 00:08
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
得分:0 

盖茨厉害! 真是再次领略了递归算法的魅力。 出于非常喜爱算法的缘故,在下也在此发表一些观后拙见了, 如有错误,还请在座各位高手们不吝指正。

设计此递归程序步骤: 1. 首先得发现此问题是 递归可解类型的,即递归的,如得出所有n-1位排列数是得出所有n位排列数在规则上的一个复制,n-2,n-3...1位数皆亦如此。 2. 其次为程序设计一个递归出口,即当n等于1时,盖茨这儿用的是 search()函数形参为0。 3. 最后 for(i=1; i<=n; i++) { c[k]=i; k++; search(x-1); k--; } 偶对这个关键部分的理解 k初值为0,c[k]的值即表示第n位的值(最左位) k++,k--是为了使c[k]保持在原位即最左位能取到所有1~n 什么时候开始递归?自然当最左位向右移动一位,接下来的步骤就是对前位操作规则的复制。

[此贴子已经被作者于2005-1-6 22:21:42编辑过]


2005-01-06 22:18
快速回复:[转帖]排列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016310 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved