三维坐标是否有重复

本文介绍了一个通过遍历三维坐标并使用三维数组记录每个坐标出现次数的方法来判断是否存在坐标重合的问题。输入包括多组数据,每组数据含有多个点的坐标(x, y, z),算法将检查这些点中是否存在完全相同的坐标。

1915: H

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 282   Solved: 118

Submit Status Web Board

Description

在三维空间里,晴天得到了一些坐标,然后他想知道这些坐标有没有重合的哇,然后若两个坐标是重合的也就是x=x,y=y,z=z。然后他把这个任务交给你啦。

Input

输入第一行包含一个整数t表示有多少组数据。
每组数据一个整数n,表示有多少个点。
接下来n行,每行有三个整数x,y,z表示一个点的坐标.
0<=n<=200000,0<=x,y,z<100,t<=20

Output


若有两个点重合输出yes,否则输出no

Sample Input

1
3
1 1 1
1 2 1
1 1 1

Sample Output

yes

#include<cstdio> 
#include<cstring> 
#include<algorithm> 
using namespace std; 
int vis[200][200][200]; 
struct node 
{ 
int x,y,z; 
}a[200005]; 
int main() 
{ 
    int t; 
    scanf("%d",&t); 
    while(t--) 
    { 
        int n,x,y,z; 
        scanf("%d",&n); 
        int faut=0; 
        for(int i=1;i<=n;i++) 
                scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z); 
                memset(vis,0,sizeof(vis)); 
            for(int i=1;i<=n;i++) 
            { 
                if(vis[a[i].x][a[i].y][a[i].z]==0) 
            vis[a[i].x][a[i].y][a[i].z]=1; 
            else
                { 
                faut=1;break; 
                } 
            } 
        if(faut==1) 
        printf("yes\n"); 
        else
        printf("no\n"); 
    } 
    return 0; 
 }  
/************************************************************** 
    Problem: 1915 
    User: wry 
    Language: C++ 
    Result: Accepted 
    Time:240 ms 
    Memory:34464 kb 
****************************************************************/ 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值