| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1921 人关注过本帖
标题:求解答
只看楼主 加入收藏
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
结帖率:87.5%
收藏
已结贴  问题点数:2 回复次数:7 
求解答
/*输入样例 1 4 2 0 1 输出样例: No
输入样例 4 5 1 0 1 1 2 3 2 3 4 输出样例: Yes
*/
#include<iostream>
#include<algorithm>
using namespace std;
const int N=505;
int lx[8]={0,1,0,-1,-1,-1,1,-1};
int ly[8]={1,0,-1,0,-1,1,1,1};
int a,b;
bool le;
bool vst[N][N];
void dfs(int x,int y){
    int nx,ny;
    if(vst[x][y]==vst[nx][ny]){
        le=true;
        return;
    }else{
        int k;
        for(k=0;k<=8;k++){
            nx=x+lx[k];
            ny=y+lx[y];
            dfs(nx,ny);
            vst[x][y]=true;
        }
    }
}
int main(){
    int n,w,r;
    cin>>n>>w>>r;
    for(int i=1;i<=n;i++){
        cin>>a>>b;
        dfs(0,0);
    }
    if(le==true) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    cin>>n;
    return 0;
}
//第一个样例输出为yes

[此贴子已经被作者于2018-7-24 21:09编辑过]

搜索更多相关主题的帖子: 输出 int return cin cout 
2018-07-24 20:54
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
收藏
得分:0 
求大神解答~~~

[此贴子已经被作者于2018-7-24 21:10编辑过]


import random
i=random.randint(100,100000)
print i
2018-07-24 20:54
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:1 
没注释好歹给个题目吧
2018-07-24 22:04
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
收藏
得分:0 
题目在此
第四题:轻功水上漂

武林秘籍中的轻功水上漂已经被你学会,可以在河里的相邻荷叶上快速走过,而不掉入水中。有一条河,宽w米,你的坐标是(0,0),
正对岸的坐标就是(0,w)。现在有n个圆形荷叶,每个半径r米,第i个荷叶坐标(x[i],y[i])。只有荷叶与荷叶(或岸边)有接触才是互相连通的,
才可以在两者之间走动。请问你能否发轻功顺利过河?

输入第一行为正整数n,w,r。接着n行依次为正整数x[i],y[j]。n,w,r<=500。输出Yes或者No

输入样例:
1 4 2
0 1
输出样例:
No

输入样例:
4 5 1
0 1
1 2
3 2
3 4
输出样例:
Yes



import random
i=random.randint(100,100000)
print i
2018-07-25 10:48
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
收藏
得分:0 
题目在此
第四题:轻功水上漂

武林秘籍中的轻功水上漂已经被你学会,可以在河里的相邻荷叶上快速走过,而不掉入水中。有一条河,宽w米,你的坐标是(0,0),
正对岸的坐标就是(0,w)。现在有n个圆形荷叶,每个半径r米,第i个荷叶坐标(x[i],y[i])。只有荷叶与荷叶(或岸边)有接触才是互相连通的,
才可以在两者之间走动。请问你能否发轻功顺利过河?

输入第一行为正整数n,w,r。接着n行依次为正整数x[i],y[j]。n,w,r<=500。输出Yes或者No

输入样例:
1 4 2
0 1
输出样例:
No

输入样例:
4 5 1
0 1
1 2
3 2
3 4
输出样例:
Yes



import random
i=random.randint(100,100000)
print i
2018-07-25 10:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:1 
为什么要别人提醒才粘贴题目要求?

随手写,没验证(也没处验证)
程序代码:
#include <cstdio>

static inline bool isneared( const unsigned a[2], const unsigned b[2], unsigned dis )
{
    return (a[0]-b[0])*(a[0]-b[0]) + (a[1]-b[1])*(a[1]-b[1]) <= dis*dis;
}

static bool foo_( unsigned n, unsigned w, unsigned r, const unsigned centers[][2], bool mask[], unsigned index )
{
    if( centers[index][1]+r >= w )
        return true;
    mask[index] = true;

    for( unsigned i=0; i!=n; ++i )
        if( !mask[i] && isneared(centers[i],centers[index],2*r) && foo_(n,w,r,centers,mask,i) )
            return true;
    return false;
}

bool foo( unsigned n, unsigned w, unsigned r, const unsigned centers[][2] )
{
    if( w == 0 )
        return true;

    bool mask[500] = {};
    for( unsigned i=0; i!=n; ++i )
        if( !mask[i] && centers[i][1]<=r && foo_(n,w,r,centers,mask,i) )
            return true;
    return false;
}

int main( void )
{
    unsigned n, w, r, centers[500][2];
    scanf( "%u%u%u", &n, &w, &r );
    for( unsigned i=0; i!=n; ++i )
        scanf( "%u%u", &centers[i][0], &centers[i][1] );

    printf( "%s\n", foo(n,w,r,centers)?"Yes":"No" );
}

2018-07-26 08:43
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
收藏
得分:0 
谢谢

import random
i=random.randint(100,100000)
print i
2018-07-26 20:52
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
收藏
得分:0 
谢谢

import random
i=random.randint(100,100000)
print i
2018-07-26 20:52
快速回复:求解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044793 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved