⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c(n,k).txt

📁 排列问题 M个1,N个0的排列(高效率版) 排列数为:c(m+n,n) 对n个0,m个1,我的想法是这样的: 每个排列可以分三段: 全0列,全1列, 子问题列 设各段长:r,s,t .子问
💻 TXT
字号:
/*     产生从n个元素中选k个的所有排列,并升序输出    */
#include <stdio.h>
#include <memory.h>
#include <algorithm>
using namespace std;
const int S = 50 , nK = 6;
int   k,e[S],ans[S];
bool  used[S];
void Dfs(int depth)
{
   int i;
   if(depth==nK+1)
   { 
	 for(i=1;i<=nK;i++)
		printf("%d ",ans[i]);
	 printf("\n");
   }
   else 
   { 
	 for(i=1;i<=k;i++)
	 {
		 if(used[i]==0)
		 {
			ans[depth] = e[i];
		    used[i] = 1;
                    Dfs(depth+1);
		    used[i] = 0;
		 }
	 }
   }
}
int main () 
{ 
  int i;
  while(EOF!=scanf("%d",&k))
  {
	 if(k==0)
		break;
     for(i = 1;i<=k;i++)
        scanf("%d", &e[i]);
	 memset(ans,0,sizeof(ans));
	 memset(used,0,sizeof(used));
	 Dfs(1);
  }
   return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -