天天看點

遞歸類型的排列組合來解決問題(一個、周期類排列組合)

對于搜尋深度非常深或深度的情況是不固定的,不能使用枚舉方法來設定嵌套循環的層數,然後,考慮使用遞歸的方法就可以完成搜尋任務。遞歸是一種常用的算法,這也是搜尋的實作。該方法假設一個功能或過程,直接或間接地調用自身來解決在算法設計此問題,這種方法被稱為遞歸算法。好一個或若幹個确定的遞歸終止條件。

一、類循環組合排列

Sample Input

: 

4 2  

Sample Output 

0000 

0001 

0010 

0011 

0100 

0101 

0110 

0111 

1000 

1001 

1010 

1011 

1100 

1101 

1110 

1111  

#include<stdio.h>
int n,m,mat[10];
void solve(int l)
{
    if(l>=n)
    {
        for(int i=0;i<n;++i)
            printf("%d",mat[i]);
        puts("");
        return;
    }
    for(int i=0;i<m;++i)
    {
        mat[l]=i;
        solve(l+1);
    }
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        solve(0);
    }
    return 0;
}