ex3.cpp
来自「上海交通大学本科算法大作业」· C++ 代码 · 共 114 行
CPP
114 行
#include <fstream>
#include <algorithm>
using namespace std;
struct HC{
int x1,x2,y;
};
struct VC{
int x,y1,y2;
};
int main(){
int i;
ifstream fin("intersection3.in");
int HN,VN;
fin>>HN>>VN;
HC H[100];
VC V[100];
for (i=0;i<HN;i++){
fin>>H[i].x1>>H[i].x2>>H[i].y;
}
for (i=0;i<VN;i++){
fin>>V[i].y1>>V[i].y2>>V[i].x;
}
int Q[200];
int QN=0;
for ( i=0;i<HN;i++){
bool flag=true;
for (int j=0;j<QN;j++){
if (Q[j]==H[i].x1) flag=false;
}
if (flag){
Q[QN++]=H[i].x1;
}
flag=true;
for ( j=0;j<QN;j++){
if (Q[j]==H[i].x2) flag=false;
}
if (flag){
Q[QN++]=H[i].x2;
}
}
for (i=0;i<VN;i++){
bool flag=true;
for (int j=0;j<QN;j++){
if (Q[j]==V[i].x){
if (Q[j]==V[i].x) flag=false;
}
}
if (flag){
Q[QN++]=V[i].x;
}
}
sort(Q,Q+QN);
HC S[100];
bool SAV[100];
memset(SAV,0,sizeof(SAV));
int SN=0;
int resx[100],resy[100],resn=0;
for (int z=0;z<QN;z++){
int p=Q[z];
for (int i=0;i<HN;i++){
if (H[i].x1==p){
S[SN].x1=H[i].x1;
S[SN].x2=H[i].x2;
S[SN].y=H[i].y;
SN++;
}
for (int j=0;j<VN;j++){
if (V[j].x==p){
for (int k=0;k<SN;k++){
if (!SAV[k]&&S[k].y>=V[j].y1&&S[k].y<=V[j].y2){
bool dump=false;
for (int z=0;z<resn;z++){
if (resx[z]==p&&resy[z]==S[k].y){
dump=true;
break;
}
}
if (!dump){
resx[resn]=p;
resy[resn++]=S[k].y;
}
}
}
}
}
if (H[i].x2==p){
for (int j=0;j<SN;j++){
if (S[j].x1==H[i].x1&&S[j].x2==H[i].x2&&S[j].y==H[i].y){
SAV[j]=true;
}
}
}
}
}
ofstream fout("intersection3.out");
fout<<resn<<endl;
for (i=0;i<resn;i++){
fout<<resx[i]<<" "<<resy[i]<<endl;
}
fout.close();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?