Bear and Three Balls熊和三个小球

Description

Limak is a little polar bear. He has n balls, the i-th ball has size ti.

Limak wants to give one ball to each of his three friends. Giving gifts isn't easy — there are two rules Limak must obey to make friends happy:

  • No two friends can get balls of the same size.
  • No two friends can get balls of sizes that differ by more than 2.

For example, Limak can choose balls with sizes 45 and 3, or balls with sizes 9091 and 92. But he can't choose balls with sizes 55and 6 (two friends would get balls of the same size), and he can't choose balls with sizes 3031 and 33 (because sizes 30 and 33 differ by more than 2).

Your task is to check whether Limak can choose three balls that satisfy conditions above.

Input

The first line of the input contains one integer n (3 ≤ n ≤ 50) — the number of balls Limak has.

The second line contains n integers t1, t2, ..., tn (1 ≤ ti ≤ 1000) where ti denotes the size of the i-th ball.

Output

Print "YES" (without quotes) if Limak can choose three balls of distinct sizes, such that any two of them differ by no more than 2. Otherwise, print "NO" (without quotes).

Sample Input

Input
4
18 55 16 17
Output
YES
Input
6
40 41 43 44 44 44
Output
NO
Input
8
5 972 3 4 1 4 970 971
Output
YES
    
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>  //题意:是否存在三个连续的数
#include <cstdio>  
#include <cstring>  
#include <algorithm>   
using namespace std;   
int main()  
{  
    int n,a[55],b[55];  
    while(~scanf("%d",&n))  
    {  
        int ans=1,f=0,k=0;  
        for(int i=0;i<n;i++)  
            scanf("%d",&a[i]);  
        sort(a,a+n);  
        b[0]=a[0];  
        for(int i=1;i<n;i++)  
        {  
            if(a[i]!=a[i-1]) //消除重复的 
                b[++k]=a[i];  
        }  
        for(int i=2;i<=k;i++)  
        {  
            if((b[i]-b[i-1]==1)&&(b[i]-b[i-2]==2))  //判断连续
            {  
                f=1;  
                break;  
            }  
        }  
        if(f)  
            printf("YES\n");  
        else  
            printf("NO\n");  
    }  
    return 0;  }


好的,以下是基于HTML、CSS和JavaScript的代码实现: ```html <!DOCTYPE html> <html> <head> <title>小球拖拽</title> <style> #ballContainer { display: flex; justify-content: space-between; align-items: center; height: 300px; } .ball { width: 50px; height: 50px; background-color: red; border-radius: 50%; margin: 10px; cursor: pointer; } .box { width: 100px; height: 100px; border: 2px solid black; margin: 10px; display: flex; justify-content: center; align-items: center; } .success { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: green; color: white; padding: 10px; border-radius: 5px; display: none; } </style> </head> <body> <div id="ballContainer"> <div class="ball"></div> <div class="ball"></div> <div class="ball"></div> <div class="ball"></div> </div> <div id="boxContainer"> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> <div id="successMsg" class="success">拖拽成功!</div> <script> const balls = document.querySelectorAll('.ball'); const boxes = document.querySelectorAll('.box'); const successMsg = document.querySelector('#successMsg'); let draggedBall = null; for (let ball of balls) { ball.addEventListener('dragstart', () => { draggedBall = ball; }); ball.addEventListener('dragend', () => { draggedBall = null; }); } for (let box of boxes) { box.addEventListener('dragover', (e) => { e.preventDefault(); }); box.addEventListener('drop', (e) => { e.preventDefault(); if (e.target.classList.contains('box') && e.target.children.length === 0) { e.target.appendChild(draggedBall); successMsg.style.display = 'block'; setTimeout(() => { successMsg.style.display = 'none'; }, 2000); } }); } </script> </body> </html> ``` 在这个实现中,我们首先使用了flex布局,将小球和框排列在一行,方便用户进行拖拽操作。小球和框都是使用div元素实现的,小球的样式通过CSS设置,框的样式同样也是通过CSS设置。对于提示框,我们使用了一个绝对定位的div元素,并将其初始状态设为不可见。 在JavaScript代码中,我们首先使用querySelector和querySelectorAll方法获取到需要操作的元素,然后为每个小球添加了dragstart和dragend事件,分别在拖拽开始和结束时记录和取消记录拖拽的小球。对于框,我们为其添加了dragover和drop事件,以防止默认行为和获取拖拽的元素。在拖拽结束时,我们首先判断放置的目标框是否为空,如果为空则将小球添加到框中,同时弹出提示框并在2秒后隐藏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值