2个回答
展开全部
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int t=1,end1,length;
int vis[100001];
void Permutation(int a[],int m);
void my_print(int a[]);
int Factorial(int n)
{
int product=1;
if(n==0) return 1;
else
{
for(int i=1;i<=n;i++)
{
product = product*i;
}
}
return product;
}
int main()
{
t=0;
cin>>end1>>length;
memset(vis,0,sizeof(vis));
int b[end1];
Permutation(b,0);
return 0;
}
void my_print(int a[])
{
for(int i=0;i<length;i++)
printf("%d",a[i]);
printf("\n");
}
void Permutation(int a[],int m)
{
if(m == end1)
{
t++;
if(end1 == length)
{
my_print(a);
return;
}
else if(!(t%Factorial(end1-length))) //注意被除数是否为0;
{
my_print(a);
return;
}
}
else
{
for(int i=0;i<end1;i++)
{
if(vis[i] == 0)
{
vis[i]=1;
a[m] = i+1;
Permutation(a,m+1);
vis[i] = 0;
}
}
}
}
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int t=1,end1,length;
int vis[100001];
void Permutation(int a[],int m);
void my_print(int a[]);
int Factorial(int n)
{
int product=1;
if(n==0) return 1;
else
{
for(int i=1;i<=n;i++)
{
product = product*i;
}
}
return product;
}
int main()
{
t=0;
cin>>end1>>length;
memset(vis,0,sizeof(vis));
int b[end1];
Permutation(b,0);
return 0;
}
void my_print(int a[])
{
for(int i=0;i<length;i++)
printf("%d",a[i]);
printf("\n");
}
void Permutation(int a[],int m)
{
if(m == end1)
{
t++;
if(end1 == length)
{
my_print(a);
return;
}
else if(!(t%Factorial(end1-length))) //注意被除数是否为0;
{
my_print(a);
return;
}
}
else
{
for(int i=0;i<end1;i++)
{
if(vis[i] == 0)
{
vis[i]=1;
a[m] = i+1;
Permutation(a,m+1);
vis[i] = 0;
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int res[1000];
void comb(int n, int k, int start, int layer){
int tmp;
int i;
if(layer > k){
for(i = 0; i < k; ++i)
printf("%d ", res[i]);
printf("\n");
return;
}
for(tmp = start ; tmp+k-layer <= n; ++tmp){
res[layer-1] = tmp;
comb(n, k, tmp+1, layer+1);
}
}
int main(){
comb(5, 2, 1, 1);
return 0;
}
不只要考虑两个数,多层也要考虑。
追问
晕,看不懂你的算法你能解释下吗?
追答
你可以运行一下 然后加结点 就是递归咯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询