RE求调
查看原帖
RE求调
762010
Lizj楼主2024/1/27 12:57

rt,本地VSC调试时报错调出了vector库中的size函数,求调

#include<bits/stdc++.h>
using namespace std;
vector<int> v[100];
int n;
void find(int p,int &x,int &y){
	for(int i=0;i<n;i++){
		int len=v[i].size();
		for(int j=0;j<len;j++){
			if(v[i][j]==p){
				x=i,y=j;
				return;
			}
		}
	}
}
void pile_clear(int p){
	int x,y;
	find(p,x,y);
	int len=v[x].size(); 
	for(int i=y+1;i<len;i++)
		v[v[x][i]].push_back(v[x][i]);
	v[x].resize(y+1);
}
void move_onto(int p1,int p2){
	pile_clear(p1);
	pile_clear(p2);
	int x2,y2;
	find(p2,x2,y2);
	v[x2].push_back(p1);
	int x1,y1;
	find(p1,x1,y1);
	v[x1].clear();
}
void move_over(int p1,int p2){
	pile_clear(p1);
	int x2,y2;
	find(p2,x2,y2);
	v[x2].push_back(p1);
	int x1,y1;
	find(p1,x1,y1);
	v[x1].pop_back();
}
void pile_onto(int p1,int p2){
	pile_clear(p2);
	int x1,y1;
	find(p1,x1,y1);
	int len=v[x1].size();
	int x2,y2;
	find(p2,x2,y2);
	for(int i=y1;i<len;i++)
		v[x2].push_back(v[x1][i]);
	v[x1].resize(y1+1);
}
void pile_over(int p1,int p2){
	int x1,y1,x2,y2;
	find(p1,x1,y1);
	find(p2,x2,y2);
	int len=v[x1].size();
	for(int i=y1;i<len;i++)
		v[x2].push_back(v[x1][i]);
	v[x1].resize(y1+1);
}
int main(){
	cin>>n;
	string s1,s2;
	int a,b;
	for(int i=0;i<n;i++)
		v[i].push_back(i);
	while(cin>>s1>>a>>s2>>b){
		int x1,y1,x2,y2;
		find(a,x1,y1);
		find(b,x2,y2);
		if(x1==x2)
			continue;
		if(s1=="move"){
			if(s2=="onto"){
				move_onto(a,b);
			}
			if(s2=="over"){
				move_over(a,b);
			}
		}
		if(s1=="pile"){
			if(s2=="onto"){
				pile_onto(a,b);
			}
			if(s2=="over"){
				pile_over(a,b);
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<i<<": ";
		for(int j=0;j<v[i].size();j++)
			cout<<v[i][j]<<' ';
		cout<<endl;
	}
	return 0;
}
2024/1/27 12:57
加载中...