不知道怎么回事就WA了。。。。
  • 板块题目总版
  • 楼主码农同志
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/8/18 11:11
  • 上次更新2023/11/6 20:03:40
查看原帖
不知道怎么回事就WA了。。。。
268200
码农同志楼主2020/8/18 11:11

题目描述

积木对于大家来说应该很熟悉,我们可以用积木搭建出各种各样的模型,不同的人搭建出来的模型也会不一样。这不,小卡卡西正在和一群小伙伴玩积木呢! 铁人老师看见小朋友们在玩积木,就给大家出了一个难题:给定一些方形的积木,积木的三维尺寸分别为正整数 Xi,Yi,Zi,每一种积木都可以认为是无限多个。并且在搭建过程中约定如下条件:

  1. 搭建的模型每一层只能用一个积木;
  2. 模型的每一层的积木的底面必须小于它的下层,当然积木的底面可以是6个面中的任一个。 那么要如何搭建,才能使模型最高呢?

输入

第一行一个数 N,表示不同积木的种数(N<=1000) 以下 N行,每一行描述一种积木。 Xi、Yi、Zi(<=100)分别为三边的长度

输出

一行一个数 M,表示在给定的条件下能搭建的最高模型 的高度。

样例输入

1

10 20 30

样例输出

40

#include<bits/stdc++.h>
using namespace std;
int n,i,j,f[3009];
struct stu{
    int a;
	int b;
	int c;
}a[3009];
bool cmp(stu a,stu b){
	return a.a>b.a;
}
int main()
{
	cin>>n;
	for(i=1;i<=n;i++){
		cin>>a[i].a>>a[i].b>>a[i].c;
		a[n+i].a=a[i].b;
		a[n+i].b=a[i].c;
		a[n+i].c=a[i].a;
		a[2*n+i].a=a[i].c;
		a[2*n+i].b=a[i].a;
		a[2*n+i].c=a[i].b;
	} 
	n=n*3;
	for(i=1;i<=n;i++)
		if(a[i].a>a[i].b)swap(a[i].a,a[i].b);
		
		sort(a+1,a+1+n,cmp);
		f[1]=a[1].c;
		for(i=2;i<=n;i++){
			f[i]=a[i].c;
			for(j=1;j<=i-1;j++)
				if(a[j].a>a[i].a&&a[j].b>a[i].b)
					 f[i]=max(f[i],f[j]+a[i].c);
		}
		for(i=1;i<=n;i++){
			f[i]=max(f[i],f[i+1]);		
			cout<<f[n];
		}

    return 0;
}

80分WA,求大佬指教

2020/8/18 11:11
加载中...