求dalao看下程序,为什么错了?

#include <map>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define INF (0x3f3f3f3f)
#define LINF (0x3f3f3f3f3f3f3f3fLL)
using namespace std;
const int Qsize=20005;
const int Psize=105;
int Q,P,Fg;
int W[Psize],C[Psize],F[Qsize],G[Qsize];
void DFS (int f,int t) {
    if (F[Q]) Fg=1;
    if (Fg||f>t) return;
    for(int i=1;i<=P&&!Fg;i++) 
        if (!C[i]) {
            C[i]=1;
            for(int j=0;j<=Q;j++) G[j]=F[j];
            for(int j=W[i];j<=Q;j++) 
                if (F[j-W[i]]) F[j]=1;
            DFS(f+1,t);    
            if (!Fg) C[i]=0;
            for(int j=0;j<=Q;j++) F[j]=G[j];            
        }   
}
int main () {
    cin>>Q>>P;
    for(int i=1;i<=P;i++) cin>>W[i];
    sort(W+1,W+P+1);
    F[0]=1;
    int t;
    for(t=1;t<=P&&!Fg;t++) DFS(1,t);
    cout<<t-1<<" ";
    for(int i=1;i<=P;i++)   
        if (C[i]) cout<<W[i]<<" ";
    return 0; 
}

0 条评论

目前还没有评论...

信息

ID
1159
难度
7
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
2012
已通过
457
通过率
23%
被复制
5
上传者