组合数

来源:互联网 发布:python google earth 编辑:程序博客网 时间:2024/05/18 11:47

#include<iostream>#include<cstring>using namespace std;int m, n;int a[15];bool vis[15];void dfs(int i,int step){    if(step == n+1)    {        for(int j=1; j<=step-1; j++)            cout << a[j];            cout << endl;            return;    }    for(int k=m; k>=1; k--)    {        if(k<a[step-1] && !vis[k])        {            a[step] = k;            vis[k] = true;            dfs(i-1, step+1);            a[step] = m;            vis[k] = false;        }    }}int main(){    while(cin >> m >> n)    {        memset(vis, false, sizeof(vis));        memset(a, m, sizeof(a));        for(int i=1; i<=m; i++)        {            a[i] = i;        }        dfs(m,1);    }    return 0;}


#include <iostream>#include<cstring>using namespace std;int m, n;int k = 100;int a[15];bool vis[15];void dfs(int x){    if(x == n+1)///当搜到第4个的时候要退出了    {        for(int j=1; j<=n; j++)///输出选好的三个数            cout << a[j];        cout << endl;        return;    }    for(int i=m; i>=1; i--)///从m开始往回找    {        if(!vis[i] && i<k) /// 没访问过 并且小于a[x]        {            a[x] = i;             k = i;            vis[i] = true;            dfs(x+1);             k = 100;            vis[i] = false;        }    }}int main(){    while(cin >> m >> n)    {/// 5 3        memset(vis, false, sizeof(vis));        for(int i=1; i<=10; i++)            a[i] = i;        dfs(1);        }    return 0;}
5 3
543
542
541
532
531
521
432
431
421
321

0 0