码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3187 Backward Digit Sums

时间:2014-08-06 01:57:40      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:dfs   全排列   入门基础   

题目链接:http://poj.org/problem?id=3187


解析:
全排列基础问题

可以使用DFS,也可以使用STL中的next_permutation函数生成全排列

这里给出DFS的方法


代码:

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define PI 3.1415926

bool visit[15];
int a[15],b[15];
int N, sum;

bool per(int k){
    if(k == (N+1)){
        int i,j;
        for(i=1; i<=N; ++i)
            b[i] = a[i];
        for(i=1; i<N; ++i){
            for(j=1; j<=N-i; ++j){
                b[j] = b[j]+b[j+1];
            }
        }
        if(b[1] == sum){
            for(i=1; i<=N; ++i)
                printf("%d ", a[i]);
            printf("\n");
            return true;
        }
        return false;
    }

    int i;
    for(i=1; i<=N; ++i){
        if(!visit[i]){
            visit[i] = true;
            a[k] = i;
            if(per(k+1))
                return true;
            visit[i] = false;
        }
    }
    return false;
}

int main(){
    #ifdef LOCAL
        freopen("1.in","r", stdin);
    #endif

    while(~scanf("%d%d", &N, &sum)){
        memset(visit, false, sizeof(visit));
        per(1);
    }
    return 0;
}


POJ 3187 Backward Digit Sums,布布扣,bubuko.com

POJ 3187 Backward Digit Sums

标签:dfs   全排列   入门基础   

原文地址:http://blog.csdn.net/mullerwch/article/details/38392961

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!