2011年5月29日 星期日

ACM 441 Lotto

Backtracking


#include <stdio.h>
#include <stdbool.h>

int k, num[12], ans[6];

void dfs(int depth, int n)
{
    int i;
  
    if (depth >= 6)
    {
        printf("%d", ans[0]);
        for (i = 1; i < 6; i++)
            printf(" %d", ans[i]);
        puts("");
        return;
    }
    for (i = n; i < k; i++)
    {
        ans[depth] = num[i];
        dfs(depth+1, i+1);
    }
}

int main(void)
{
    int i;
    bool flag = false;
  
    while (scanf("%d", &k) == 1 && k)
    {
        if (flag)
            putchar('\n');
        for (i = 0; i < k; i++)
            scanf("%d", &num[i]);
        dfs(0, 0);
        flag = true;
    }
  
    return 0;
}

沒有留言:

張貼留言