zoukankan      html  css  js  c++  java
  • UVa 437

    综合素质评选,就是耻辱

    知耻而后勇。

    更高处见,和这些恶心人和事再也不见

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #include <vector>
    using namespace std;
    
    const int maxn= 35;
    const int sd= 3;
    
    int tps[maxn][sd];
    int dp[maxn][sd];
    int n;
    
    void Getv(int *v, int id, int dm)
    {
    	int j= 0;
    	for (int i= 0; i< sd; ++i){
    		if (i!= dm){
    			v[j++]= tps[id][i];
    		}
    	}
    }
    int Dp(int id, int dm)
    {
    	if (dp[id][dm]> 0){
    		return dp[id][dm];
    	}
    	int a= 0;
    	int v[2], vv[2];
    
    	Getv(v, id, dm);
    
    	for (int i= 0; i< n; ++i){
    		for (int j= 0; j< sd; ++j){
    			Getv(vv, i, j);
    			if (v[0]> vv[0] && v[1]> vv[1]){
    				a= max(a, Dp(i, j));
    			}
    		}
    	}
    
    	dp[id][dm]= a+tps[id][dm];
    	return dp[id][dm];
    }
    
    int main(void)
    {
    	int ans, kase= 0;
    
    	while ((EOF!= scanf("%d", &n)) && 0!=n){
    		ans= -1;
    		memset(dp, -1, sizeof(dp));
    		for (int i= 0; i< n; ++i){
    			scanf("%d %d %d", tps[i], tps[i]+1, tps[i]+2);
    			sort(tps[i], tps[i]+3);
    		}
    
    		for (int i= 0; i< n; ++i){
    			for (int d= 0; d< sd; ++d){
    				ans= max(ans, Dp(i, d));
    			}
    		}
    
    		printf("Case %d: maximum height = %d
    ", ++kase, ans);
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/13752525.html
Copyright © 2011-2022 走看看