pat 1068(超时)

来源:互联网 发布:知敬畏的意思 编辑:程序博客网 时间:2024/06/04 19:16
#include<stdio.h>#include<algorithm>using namespace std;struct coin{    int num;    int flag;};int size;bool cmp(const struct coin &a, const struct coin &b){    return a.num < b.num;}bool FindCoin(struct coin a[], int index, int sum,int m,int n){    if (index == n)        return false;    int i;    sum += a[index].num;    a[index].flag = 1;    size++;    if (sum == m)        return true;    for (i = index + 1; i < n; i++)        if (FindCoin(a, i, sum, m, n))            break;    if (i == n){        sum -= a[index].num;        a[index].flag = 0;        size--;        return false;    }    else return true;}int main(){    int m, n;    freopen("1.in", "r", stdin);    scanf("%d%d", &n, &m);    struct coin *a = new struct coin[n];    int i;    for (i = 0; i < n; i++)    {        scanf("%d", &a[i].num);        a[i].flag = 0;    }    sort(a, a + n, cmp);    bool flag = FindCoin(a, 0, 0,m,n);    if (flag){        for (i = 0; i < n; i++){            if (a[i].flag == 1){                printf("%d", a[i].num);                size--;                if (size == 0)                    putchar('\n');                else putchar(' ');            }        }    }    else printf("No Solution\n");    return 0;}
0 0