大家还记得Ryan在女生节上认识的那个陪他看星星、查星等的女神么?
其实,那件事情还有后续= =
由于用了你的程序,Ryan非常顺利地回答了女神问的每一颗星星的星等。
正在她得意的时候,女神继续发问:“你知道浩瀚的星空中,空间坐标为(5, 4, 213)的点上有没有一颗天体么?”
Ryan当场给跪= = 所以请你来帮他干掉女神吧~
Input
多组测试数据。
每组测试数据,第一行为一个数字n(1<=n<=105),代表天上共有n颗星星。
接下来n行,每行三个数x, y, z(0<=x,y,z<=100),代表一颗星星的空间坐标。
第n+2行为一个数字m(1<=m<=105),代表女神问Ryan的m颗星星。
接下来m行,每行三个数x', y', z',代表女神问的某颗星星的坐标。
Output
对于每组测试数据输出共m行。
"YES"代表这颗星星存在,反之为"NO"。
Sample Input
3 1 2 3 2 3 4 3 4 5 2 1 2 3 4 5 6
Sample Output
YES NO
Hint
使用cin/cout可能会超时
分析:这个题目用的不是二维数组而是三维数组!为我们以后做题提供了一个思路:多组数据可以通过数组下标储存,尤其是判断有没有的情况,这样就省去了搜索算法。。。比较高效的方法,只要声明一个三维数组,初始化一下。通过给确定下标来存储记忆,再一次输入时只要调出相应下标的值,就能够确定是否存在!
#include<stdio.h>
using namespace std;
int x[110][110][110];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<110;i++){
for(int j=0;j<110;j++){
for(int k=0;k<110;k++){
x[i][j][k]=0;
}
}
}
int a,b,c;
a=0;
b=0;
c=0;
for(int i=0;i<n;i++){
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
x[a][b][c]=1;
a=0;
b=0;
c=0;
}
int m;
scanf("%d",&m);
for(int j=0;j<m;j++){
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(x[a][b][c]==1){
printf("YES\n");
}
if(x[a][b][c]!=1){
printf("NO\n");
}
}
}
return 0;
}