zoukankan      html  css  js  c++  java
  • hdu 4152暴搜

    简单题,暴搜就可以过了。

    /*
     * hdu4152/win.cpp
     * Created on: 2012-7-28
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <set>
    #include <map>
    #include <stack>
    #include <string>
    #include <vector>
    #include <deque>
    #include <list>
    #include <functional>
    #include <numeric>
    #include <cctype>
    using namespace std;
    const int MAXN = 22;
    const int MAXM = 18;
    typedef struct {
        int num;
        int lists[MAXM];
        void init() {
            num = 0;
        }
    }Record;
    inline bool operator<(const Record &r1, const Record &r2) {
        if(r1.num != r2.num) {
            return r1.num > r2.num;
        }else {
            for(int i = 0; i < r1.num; i++) {
                if(r1.lists[i] != r2.lists[i]) {
                    return r1.lists[i] < r2.lists[i];
                }
            }
        }
        return true;
    }
    int N, M, goals[MAXN], data[MAXM][MAXN];
    bool use[MAXM];
    Record ans;
    
    bool judge() {
        int tgoals[MAXN];
        memcpy(tgoals, goals, sizeof(goals));
        for(int i = 0; i < M; i++) {
            if(!use[i]) {
                continue;
            }
            for(int j = 0; j < N; j++) {
                tgoals[j] -= data[i][j];
            }
        }
        int j;
        for(j = 0; j < N; j++) {
            if(tgoals[j] > 0) {
                break;
            }
        }
        return j >= N;
    }
    
    void dfs(int m) {
        if(m > 0) {
            use[m - 1] = true;
            dfs(m - 1);
            use[m - 1] = false;
            dfs(m - 1);
            return;
        }
        if(!judge()) {
            return ;
        }
        Record temp;
        temp.init();
        for(int i = 0; i < M; i++) {
            if(use[i]) {
                temp.lists[temp.num++] = i + 1;
            }
        }
        if(temp < ans) {
            ans = temp;
        }
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif
        while(scanf("%d", &N) == 1) {
            for(int i = 0; i < N; i++) {
                scanf("%d", &goals[i]);
            }
            scanf("%d", &M);
            for(int i = 0; i < M; i++) {
                for(int j = 0; j < N; j++) {
                    scanf("%d", &data[i][j]);
                }
            }
            memset(use, false, sizeof(use));
            ans.init();
            dfs(M);
            printf("%d", ans.num);
            for(int i = 0; i < ans.num; i++) {
                printf(" %d", ans.lists[i]);
            }
            putchar('\n');
        }
        return 0;
    }
  • 相关阅读:
    SQL ——索引、视图和事务
    流控制语句
    SQL Server 高级编程之T-SQL 编程函数
    SQL高级编程之waitfor
    数据库主键、外键、唯一等约束
    打代码会遇到的单词
    前端词云图
    docker+mysql集群+读写分离+mycat管理+垂直分库+负载均衡
    lvs+keepalived实现Mycat的负载均衡--高可用
    mycat配置数据库集群
  • 原文地址:https://www.cnblogs.com/moonbay/p/2613016.html
Copyright © 2011-2022 走看看