社区讨论

为什么会RE啊

P1004[NOIP 2000 提高组] 方格取数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo9134nn
此快照首次捕获于
2023/10/28 03:50
2 年前
此快照最后确认于
2023/10/28 03:50
2 年前
查看原帖
CPP
#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;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...