惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
量子位
Martin Fowler
Martin Fowler
月光博客
月光博客
P
Proofpoint News Feed
博客园_首页
Y
Y Combinator Blog
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
H
Help Net Security
U
Unit 42
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell

明明如月成长笔记

个人数据的开源备份:从明清档案之殇想到的 简体字的双重优势:打字效率与扫盲成效全解析 四小时深圳书城奇遇:那些藏在书架间的偶然与必然 正式把我的笔记系统迁移到 Obsidian,为了和 AI 配合 Gemini CLI 登录踩坑记录:GOOGLE_CLOUD_PROJECT_ID 的坑与解法 在 MacOS 上,成功恢复存储卡上被误删的照片 AI CLI 工具:Claude Code, Codex, Gemini CLI, Qwen code, CodeBuddy cli, cursor-agent 我的常用命令 港漂日记62:父亲节独自带娃,室内游戏、香港公园探展、观鸟、品味米其林餐厅 南航随心飞机票爬虫解密 acw_sc__v2 港漂日记61:香港私立诊所首诊:商业医保如何改变我的就医体验? 香港历史博物馆:看秦始皇兵马俑,还能和孔子比身高? 港漂日记59:母亲节礼物!AI 涂色小技巧,让孩子的爱跃然纸上 港漂日记60:西营盘网红旧书店 Book & Go 淘书记 港漂日记58:萌娃中环学体操,课后老师狂点赞 五一游记D4:深圳笔架山儿童乐园,邂逅无人机送外卖 我的400篇博客都写了些什么 珊瑚海兔四岁啦 港漂日记D159:亲子同乐日:一场精彩的幼儿园嘉年华 蛇年春节自驾D10:东莞-深圳-香港 DeepSeek教我如何收拾行李箱 福田取逗留签 回港新方式 蛇年春节自驾D9:江门-顺德-东莞 中国侨都华侨华人博物馆 东莞迎宾馆 蛇年春节自驾D8:茂名-开平-江门 挥春作业 粤西堵车 开平碉楼 迎财神 茂名博物馆参观记 蛇年春节自驾D7:茂名 中国第一摊 茂名博物馆 亚朵酒店 蛇年春节自驾D6:南宁-茂名 发财树 青秀山 路途亲子游戏 蛇年春节自驾D5:南宁过大年 醒狮贺岁 三街两巷 特色美食 骑行穿城 琅西夜市 打铁花 新春好!我用DeepSeek写祝福,顺便送你三款红包封面 蛇年春节自驾D4:钦州-南宁 钦州老街,万丽年夜饭 蛇年春节自驾D3:海陵岛-钦州 绝美悬崖餐厅,海景房租赁行情 明明如月成长笔记2024年公众号创作回顾(含免费红包封面🧧) 蛇年春节自驾D2:深圳-阳江-海陵岛
poj3984
lmm333 · 2010-12-03 · via 明明如月成长笔记

顶嵌杯决赛第二题,简单的bfs,关键是gcc不能用stl,所以得自己写一个队列。

已注释:

#include <stdio.h>
#include <stdlib.h>
int mm[5][5];
int dir[4][2]={ {0,1},{0,-1},{1,0},{-1,0}};

typedef struct
{
int x,y;//坐标
int pre;//前一节点
}node ;

node que[10005];
int vs[5][5];//标记已访问


int judge(node a)
{
if(a.x<0||a.y<0||a.x>=5||a.y>=5)return 0; //越界返回0
if(mm[a.x][a.y]==1)return 0;//墙
return 1;
}


void dfs(node a)//这个其实是输出输出函数
{
if(a.pre==-1)return ;//结束条件(找到原点)
else dfs(que[a.pre]);
printf("(%d, %d)\n",a.x,a.y);//从第二个节点开始顺序输出,注意中间有个空格
}


int work()//广搜函数
{
int i;
node t1,t2;
memset(vs,0,sizeof(vs));//这个其实无所谓的吧
int sp,head;//sp队尾标志,head队首标志
//初始化左上角
que[0].x=0;
que[0].y=0;
que[0].pre=-1;
vs[0][0]=1;
head=0;
sp=1;
while(head<sp)
{
   t1=que[head];//队首出队
   head++;//对手标记加1
   if(t1.x==4&&t1.y==4)break;//已找到,退出
   t2=t1;
   for(i=0;i<4;i++)//遍历四个方向
   {
    t2.x+=dir[i][0];
    t2.y+=dir[i][1];
    if(judge(t2) && vs[t2.x][t2.y]==0)//vs是已访问
    {
     t2.pre=head-1;//标记前节点(在que里的序号)
     que[sp++]=t2;//进队
     vs[t2.x][t2.y]=1;//标记已访问
    }
   }
}
dfs(t1);
return 0;
}
int main ()
{
int i,j;
for(i=0;i<5;i++)
{
   for(j=0;j<5;j++)scanf("%d",&mm[i][j]);
  
}
printf("(0, 0)\n");
work();
return 0;
}