欢迎加入 Apache Flink Slack 空间

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Apache Flink 社区宣布创建其专属的 Slack 空间,欢迎广大社区开发者与用户加入。

题目背景:
《爱与愁的故事第三弹·shopping》最终章。
题目描述:
爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在x1,y1处,车站在x2,y2处。现在给出一个n×n(n<=1000)的地图,0表示马路,1表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(ai距离为1)。你能帮他解决吗?
输入格式:
第1行:一个数 n
第2行~第n+1行:整个地图描述(0表示马路,1表示店铺,注意两个数之间没有空格)
第n+2行:四个数 x1,y1,x2,y2
输出格式:
只有1行:最短到达目的地距离
样例输入:
3
001
101
100
1 1 3 3
样例输出:
4
说明/提示:
20%数据:n<=100
100%数据:n<=1000
AC Code:

include<bits/stdc++.h>

using namespace std;

define N 1001

char sN;//存入地图
bool visN;//标记数组
int n,sx,sy,ex,ey,head,tail;
int dx[]={0,0,1,-1};//方向数组
int dy[]={1,-1,0,0};
struct node {//定义结构体用来模拟队列

int x,y,step;

}q[N*N];
bool judge(int x,int y) {//不越界,不是店铺,这个点没有走过

if(x>=1&&x<=n&&y>=1&&y<=n&&s[x][y]!='1'&&vis[x][y]==false) {
    return true;
}
return false;

}
int main() {

memset(vis,false,sizeof(vis));//标记数组清零 
scanf("%d",&n);
for(int i=1;i<=n;i++) {
    for(int j=1;j<=n;j++) {
        scanf(" %c",&s[i][j]);//%前面的空格确保输入完整 
    }
}
scanf("%d %d %d %d",&sx,&sy,&ex,&ey);
vis[sx][sy]=true;//标记起点 
head=tail=1;//初始化队头队尾 
q[head].x=sx;//起点坐标入队 
q[head].y=sy;
q[head].step=0;//步数初始为0 
tail++;//起点入队之后,队尾向后移动一格 
while(head<tail) {
    for(int i=0;i<4;i++) {//四个方向搜索 
        int tx=q[head].x+dx[i];
        int ty=q[head].y+dy[i];
        if(tx==ex&&ty==ey) {//走到终点 
            printf("%d\n",q[head].step+1);//步数=上个点步数+1 
            return 0;
        }
        if(judge(tx,ty)) {//合法判断 
            vis[tx][ty]=true;//标记这个点 
            q[tail].x=tx;//新的点入队 
            q[tail].y=ty;
            q[tail].step=q[head].step+1;//步数+1 
            tail++;//队尾后移 
        }
    }
    head++;//处理完一个点,队头向后移一格,搜索下一个点 
}
return 0;

}

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
17天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
465 13
Apache Flink 2.0-preview released
|
22天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
53 3
|
26天前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
51 1
|
25天前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
30天前
|
消息中间件 druid Kafka
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
66 0
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
266 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
294 0
|
存储 SQL 传感器
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
600 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
342 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
173 0

推荐镜像

更多