排列算法的C语言实现
来源:互联网 发布:电脑不显示网络服务器 编辑:程序博客网 时间:2024/05/16 05:34
回溯法实现:
1 #include
2 char data[] = {'a', 'b', 'c', 'd'};
3 int data_len = sizeof(data)/sizeof(data[0]);
4 int used[256] = {0};
5 char disp_array[256];
6
7 void print()
8 {
9 int i;
10
11 for (i = 0; i < data_len; i++)
12 {
13 printf("%c", disp_array[i]);
14 }
15 printf("/n");
16 }
17 int perm(int pos)
18 {
19 int i;
20 if (pos >= data_len)
21 {
22 print();
23 }
24 for (i = 0; i < data_len; i++)
25 {
26 if (!used[i])
27 {
28 used[i] = 1;
29 disp_array[pos] = data[i];
30 perm(pos+1);
31 used[i] = 0;
32 }
33 }
34 return 0;
35 }
36
37 int main()
38 {
39 perm(0);
40 return 0;
41 }
其它方法:
1 #include2 char data[] = {'a', 'b', 'c', 'd'};
3 int data_len = sizeof(data)/sizeof(data[0]);
4
5 void print(char *data)
6 {
7 int i;
8
9 for (i = 0; i < data_len; i++)
10 {
11 printf("%c", data[i]);
12 }
13 printf("/n");
14 }
15 void swap(char *p1, char *p2)
16 {
17 char tmp = *p1;
18 *p1 = *p2;
19 *p2 = tmp;
20 }
21 int perm(int pos)
22 {
23 int i;
24 if (pos >= data_len)
25 {
26 print(data);
27 }
28 for (i = pos; i < data_len; i++)
29 {
30 swap(&data[pos], &data[i]);
31 perm(pos+1);
32 swap(&data[pos], &data[i]);
33 }
34 return 0;
35 }
36 int main()
37 {
38 perm(0);
39 return 0;
40 }
41
- 排列算法的C语言实现
- C语言实现的全排列算法
- C语言实现的全排列算法
- C语言实现排列/组合算法
- C语言实现全排列算法
- C语言全排列算法实现
- C语言实现全排列(部分算法参考网友,可实现重复字符的组合)
- 排列和组合的非递归算法的C语言实现
- 排列和组合的非递归算法的C语言实现
- 全排列算法的思想和C语言的代码实现
- 排列和组合算法 C语言经典实现
- 排列和组合算法 C语言经典实现
- 全排列算法(c语言实现)acm练习
- 全排列C语言实现
- C语言实现全排列
- C语言实现全排列
- C语言实现全排列
- 一个比较好的全排列算法(C语言)
- Linux之父炮轰C++是糟糕程序员的垃圾语言
- CListCtrl的用法
- 421 4.7.1 : (DNS:NR) 退信报错
- android VelocityTracker类
- [转]Google Protocol Buffer 的使用和原理
- 排列算法的C语言实现
- 写报告。。。
- AMSS_BinaryFile_desc
- 网址
- Emacs html-mode
- c#不同窗体传值的问题
- linux下jdk安装
- 设计点对点聊天程序
- 链表指针容易犯的错误