深搜基础题

高中同学问了我一道题,开始以为简单循环就能完成,后来发现原来是道深搜题,一开始还没想出来...

问题描述
给1到N,N个数,要你从中选取M个出来,请输出每一种的选取情况(根据序列字典序输出,即两个序列比大小,第一位小的小,若相等第二位小的小,若相等第三位小的小……)。

样例输入


4 3


样例输出


1 2 3

1 2 4

1 3 4

2 3 4

#include<stdio.h>
int ans[10];
void dfs(int start,int has,int n,int m)
{

    if(has==m)
    {
        for(int i=0;i<m;i++)printf("%d ",ans[i]);
        printf("\n");
        return;
    }
    for(int i=start+1;i+m<=n+has+1;i++)
    {
        ans[has]=i;
        dfs(i,has+1,n,m);
    }
}
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    dfs(0,0,n,m);
}

转载于:https://www.cnblogs.com/danielqiu/archive/2012/12/23/2830294.html

猜你喜欢

转载自blog.csdn.net/weixin_34232744/article/details/93795231