2 qq 33631858 qq_33631858 于 2016.03.29 08:28 提问

初学者求助C#数据结构中用递归的方法求排列组合的问题, 2C

public void Fun_Permute_Recursion(int n, int m, int k)
{
for (int i = 1; i <= n; i++)
{
bool tag = false;
for (int j = 1; j <= k - 1; j++)
{
if (i == m_percom_temp[j])
{ tag = true; break; }
}
if (tag == false)
{
m_percom_temp[k] = i;
if (k < m)
Fun_Permute_Recursion(n, m, k + 1);
else
m_strout += Getstr_percom_temp(m);
}
}
}
老师上课给的一段代码,我看不懂,能不能告诉我一下这段代码的具体执行过程是怎样的吗

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.29 08:37

代码写得很烂,而且还不完整,m_percom_temp、m_strout、Getstr_percom_temp怎么回事鬼才知道。

看不懂不是你的责任,而是写程序的人的责任,程序不是故弄玄虚——不会写程序的人才喜欢故弄玄虚。程序的目的就是清晰表达程序员的设计意图。

参考:http://bbs.csdn.net/topics/370017724 我的回答。

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:29

C#递归求排列组合
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
求出排列组合的递归方法(C++)
/* 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。 */ ////递归方法求排列组合数 #include #include #include using namespace std; #define MAX 5 int used[MAX]={0},p[MAX]; int a[MAX],m[24]={0},k=0; void permute(
排列组合递归和非递归算法总结篇
排列组合递归和非递归算法总结篇
每日一省之————递归法计算数组的所有排列组合
本算法的目的: 给定一组数字,求这些数字的所有可能的排序组合。算法内部逻辑:模拟人进行排列组合的过程。 1. 假设仅有2个数字, 则交换其位置,可以得到所有可能的组合,也即2组。 2. 假设有3个数字。则取出第1个数字,将第2和第3个数字交换位置后得到2种组合,然后在每种组合的开头插入第1个数字。得到了3个数字排列组合的其中两种; 然后取出第2个数字,将第1和第3个数字交换位置后得到
排列组合非递归算法的实现
#include #include //从n个元素的数组a中,取m个元素的组合bool zuhe(int a[],int n,int m) { //p[x]=y 取到的第x个元素,是a中的第y个元素 int index,i,*p; p=(int*)malloc(sizeof(int)*m); if(p==NULL) re
c#排列组合递归算法
从n个字符串中取m个字符的所有组合(无放回抽样)数学原理Cn m=Cn-1m+Cn-1m-1c#代码示例using System;using System.Collections.Generic;using System.Text;namespace Combination{    class Program    {        static void Main(str
回溯法之排列组合问题
回溯法又称试探法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点为“回溯点”。 回溯与递归在实现排列组合问题时,总是要用到栈,因此当组合数比较大的时候效率不是很高。先介绍两种解决排列组合的特殊算法再介绍利用回溯法实现组合问题。 特殊组合算法:   本算法的
递归方法的使用之一 -- 用递归进行排列组合
1. 排列的问题。    本文中的排列有一个前提:被排列的对象是不能有重复的。因为在本文的叙述中并没有考虑到重复的情况。请读者自己处理。    这类问题一般都是这样的:    有一个序列,不重复,希望得到这个序列的全排列。    考虑,一个只有两个元素的序列,如AB,只有两个排列,AB,BA。因为AB已经给出,所以我们只要求BA就可以。    所以对于任意多个元素的序列,我们可以他们分成两个部分,
数据结构_递归算法_问题_栈溢出
数据结构_递归算法_问题_栈溢出
用递归法求组合数
 用递归法计算从n个人中选择k个人组成一个委员会的不用组合数:源程序:#includeint zhuhe(int i,int j){ if(j>i)  return 0; else  if(i==j||j==0)   return 1;  else   return zhuhe(i-1,j)+zhuhe(i-1,j-1);//每次递归调用都要从函数开始到函数全部结束(递归也是这样)
数据结构学习之双向循环链表的基本操作(非递归实现)
【摘要】前一篇博客阐述了循环单链表,它虽然能够实现从任一结点出发沿着链能找到其前驱结点,但时间耗费是O(n)。如果希望从表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每个结点里再增加一个指向其前驱的指针域prior。这样形成的链表中就有两条方向不同的链,我们可称之为双(向)链表(Double Linked List)。所以本文主要讨论的是双向循环链表基本操作,包括创建、删除、插入、打印等