C实现生成n个元素的全排列
发布时间:2020-12-16 07:45:42 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 用递归实现 n 个元素的全排列。 // =====================【全排列】==================#include stdio.h#include stdlib.h#define NUM 4char arr[NUM
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
用递归实现 n 个元素的全排列。
// =====================【全排列】================== #include <stdio.h> #include <stdlib.h> #define NUM 4 char arr[NUM] = { 0 }; int m_solution_num = 0; void init() { for (int i = 0; i != NUM; i++) { arr[i] = 'A' + i; } } void output() { printf("第%d组解为:n",++m_solution_num); for (int i = 0; i != NUM; i++) { printf("%ct",arr[i]); } printf("n"); } void swap(char * a,char * b) { char aa = *a; char bb = *b; aa = aa ^ bb; bb = aa ^ bb; aa = aa ^ bb; *a = aa; *b = bb; } void solve(int curpos) { if (curpos >= NUM) { output(); return; } // 原来写的是0, 这里应该是curpos for (int i = curpos; i != NUM; i++) { swap(&arr[curpos],&arr[i]); solve(++i); --i; swap(&arr[curpos],&arr[i]); } } void main() { init(); solve(0); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |