綜合素質評選,就是恥辱ios
知恥然後勇。c++
更高處見,和這些噁心人和事不再見spa
#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\n", ++kase, ans); } return 0; }