本帖最后由 伊海 于 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 请按任意键继续. . .
|