为什么会RE啊
查看原帖
为什么会RE啊
225437
wyy6203楼主2022/4/13 15:53
#include<bits/stdc++.h>
using namespace std;
int n;
struct wxyv{
	vector<int>wx;
	vector<int>wy;
	vector<int>v;
}sets;
struct nums{
	vector<int>num;
}; 
nums p(wxyv Sets,nums Num,int w,int nownum){
	bool Else=false;
	if(w==0){	
		for(int i=0;i<n;i++){//被比较(小) 
			for(int j=0;j<n;j++){//比较(大)
				if(i==j)continue;
				if(Sets.wx[i]<=Sets.wx[j]&&Sets.wy[i]<=Sets.wy[j]){
					Else=true;
					Num.num.push_back(nownum+Sets.v[i]);
					nownum+=Sets.v[i];
					p(Sets,Num,j,nownum);
					nownum-=Sets.v[i];
				}
			}
		}
		if(!Else)return Num;
	}
	for(int j=0;j<n;j++){//比较(大)
		if(w==j)continue;
		if(Sets.wx[w]<=Sets.wx[j]&&Sets.wy[w]<=Sets.wy[j]){
			Else=true;
			Num.num.push_back(nownum+Sets.v[w]);
			nownum+=Sets.v[w];
			p(Sets,Num,j,nownum);
			nownum-=Sets.v[w];
		}
	}
	if(!Else)return Num;
}
void q(nums Num){
	int first=0,second=0;
	for(int i=0;i<Num.num.size();i++){
		if(second<Num.num[i]){
			if(first<=Num.num[i]){
				second=first;
				first=Num.num[i];
			}else second=Num.num[i];
		}
	} 
	printf("%d",first+second);
	return;
}
int main(){
	scanf("%d",&n);
	int a[3];
	for(int i=0;i<n;i++){
		scanf("%d%d%d",&a[0],&a[1],&a[2]);
		sets.wx.push_back(a[0]);
		sets.wy.push_back(a[1]);
		sets.v.push_back(a[2]);
	}
	scanf("%d%d%d");
	nums num;
	num=p(sets,num,0,0);
	q(num);
	return 0;
}
2022/4/13 15:53
加载中...