zoukankan      html  css  js  c++  java
  • UVA

    题意:首先给你个w,表示几组货物。然后给你n以及n个数表示价格,10-价格是利润

    每次仅仅能取前i个,求最多的利润相应几个货物,不超过10个解

    思路:首先是简单的计算最大的利润。然后就是储存全部的解。然后深搜出全部的可能

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <queue>
    #include <vector>
    #include <set>
    
    using namespace std;
    
    const int MAXN = 100;
    
    int w, val[MAXN][MAXN];
    set<int > ans;
    vector<int > p[MAXN];
    
    void cal(int n, int sum) {
    	if (n == w) {
    		ans.insert(sum);
    		return;
    	}
    	for (int i = 0; i < p[n].size(); i++)		
    		cal(n+1, sum+p[n][i]);
    }
    
    void solve() {
    	ans.clear();
    	int valMax[MAXN], valSum, pro;
    	valSum = 0;
    	memset(valMax, 0, sizeof(valMax));
    	for (int i = 0; i < w; i++) {
    		p[i].clear();
    		pro = 0;
    		for (int j = 1; j <= val[i][0]; j++) {
    			pro += 10 - val[i][j];
    			valMax[i] = max(valMax[i], pro);
    		}
    		valSum += valMax[i];
    		if (valMax[i] == 0)
    			p[i].push_back(0);
    		pro = 0;
    		for (int j = 1; j <= val[i][0]; j++) {
    			pro += 10 - val[i][j];
    			if (valMax[i] == pro)
    				p[i].push_back(j);
    		}
    	}
    	cal(0, 0);
    	printf("Maximum profit is %d.
    ", valSum);
    	printf("Number of pruls to buy:");
    	int cnt = 0;
    	for (set<int>::iterator i = ans.begin(); i != ans.end() && cnt != 10; i++, cnt++) 
    		printf(" %d", *i);
    	printf("
    ");
    }
    
    int main() {
    	int t = 0;
    
    	while (scanf("%d", &w) != EOF && w) {
    		int b;
    		for (int i = 0; i < w; i++) {
    			scanf("%d", &val[i][0]);
    			for (int j = 1; j <= val[i][0]; j++)
    				scanf("%d", &val[i][j]);
    		}
    
    		if (t)
    			printf("
    ");
    		printf("Workyards %d
    ", ++t);
    		solve();
    	}
    
    	return 0;
    }


  • 相关阅读:
    Asp.Net中virtual、override理解
    SQL 知道字段名 全表搜索此字段属于哪个表
    C#中(int)a和Convert.ToInt32(a)的区别
    sql 查询表共多少列
    理解字节和字符
    C# IIS7.0+ Web.Config 配置Session过期时间
    Java版的扫雷游戏源码
    Activiti6.0教程 28张表解析 (三)
    Activiti6.0教程 Service用途剖析 (二)
    Activiti6.0教程 Eclipse安装Activiti Diagram插件(一)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6809419.html
Copyright © 2011-2022 走看看