配对问题 小于10 1.3.5

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>

using namespace std;

int partner[100];
int N;

int total;
void dfs()
{
    int i;
    for(i=1; i<=N; i++)
        if(partner[i]==0) break;
    if(i > N)
    {
//        for(int i=1; i<=N; i++)
//            printf("%d - %d
", i, partner[i]);
//        printf("
");
        total++;
        return ;
    }
    for(int j=i+1; j<=N; j++)
    {
        if(partner[j]==0)
        {
            partner[i] = j;
            partner[j] = i;
            dfs();
            partner[i] = 0;
            partner[j] = 0;
        }
    }
}

int main()
{
    scanf("%d", &N);
    memset(partner, 0, sizeof(partner));
    total = 0;
    dfs();
    cout<<total<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/xingxing1024/p/5186950.html