中科因仑“3+1”工程特种兵精英论坛
标题: 试题之全排序 [打印本页]
作者: 伊海 时间: 2014-8-5 15:29
标题: 试题之全排序
本帖最后由 伊海 于 2014-8-5 15:36 编辑
写一个程序,对任意一串字符串进行全排序。如123的全排序为:123,132,213,231,312,321.
- #include "stdafx.h"
- //读者在这里思考两个问题:
- //1.这个函数的作用是什么?
- //2.inline是做什么用的?
- inline void Swap(char *a, char *b)
- {
- /* 交换a和b */
- char temp = *a;
- *a = *b;
- *b = temp;
- }
- //读者想想如何列举出所有的排列顺序
- void Perm(char list[], int k, int m)
- {
- /* 生成list [k:的所有排列方式 */
- int i = 0;
- /* 输出一个排列方式 */
- if (k == m)
- {
- for (i = 0; i <= m; i++)
- {
- putchar(list);
- }
- putchar('\n');
- }
- else
- {
- /* list[k:有多个排列方式 */
- /* 递归地产生这些排列方式 */
- for (i = k; i <= m; i++)
- {
- Swap (&list[k], &list);
- Perm (list, k+1, m);
- Swap (&list [k], &list );
- }
- }
- }
- //测试
- int main(int argc, char* argv[])
- {
-
- char s[] = "1234";
- Perm(s, 0, 3);
- return 0;
- }
复制代码
编译结果:
1234
1243
1324
1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123
请按任意键继续. . .
作者: 杨玉玺 时间: 2014-8-5 15:34
这是神马东西完全不懂哎
作者: lxe 时间: 2014-8-5 15:37
高大上。。{:soso_e179:}
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) |
Powered by Discuz! X3.4 |