求7个数字的排列问题的代码
时间:2008-05-10 09:59:19
来源:论坛整理 作者: 编辑:chinaitzhe
要求是2必须在3前面,3必须在6前面,求排列方法及排列的个数。
求C或c 的程序代码
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ //数学计算7!=5040 //3!=6 //所以结果为7!/3!=840 #include <iostream> using namespace std; typedef void (__stdcall *PROCESS_FUNCTION)(int *, int); int cnt = 0; void __stdcall foo(int* t, int n) { int mark[7]; int curr = 0; int i; for (i = 0; i < n; i) if (t[i]==2||t[i]==3||t[i]==6) mark[curr ]=t[i]; if (mark[0]<mark[1]&&mark[1]<mark[2]) { for (i = 0; i < n; i) cout << t[i]; cout << endl; cnt; } } void perm_impl(int* data, int n, int curr, PROCESS_FUNCTION ope) { if (curr == n - 1) { ope(data, n); } else { for (int i = curr; i < n; i) { int t; t = data[curr], data[curr] = data[i], data[i] = t; perm_impl(data, n, curr 1, ope); t = data[curr], data[curr] = data[i], data[i] = t; } } } void perm(int n, PROCESS_FUNCTION ope) { int* t = new int[n]; for (int i = 0; i < n; i) t[i] = i 1; perm_impl(t, n, 0, ope); delete[] t; } int main() { perm(7, foo); cout << cnt << endl; }
网友回复:标记一下
网友回复:mark
网友回复:
我想可以这样做:
用一个数组保存要进行排列的数,只要保证数组中的元素2的下标小于元素6的下标,元素3的下标大于元素6的下标,应该就可以实现了。排列的个数就很好办了。
网友回复:
也就是1楼的程序实现的。
关键字:数字,排列,问题,代码,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面