https://www.luogu.com.cn/problem/P5731

这道题被标为红题,真实难度应该介于红题和橙题之间,问题在于我高估了它的难度,以为至少有橙题的难度,一般不打表的我毫不犹豫选择了用dfs解决此题,倒也没用太多时间,也完全正确,只不过做完题后打开题解发现只要用四五个while就能解决这个问题,我这完全是杀鸡用牛刀了。

提醒自己下次别上来就想着dfs;

Code

#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdlib>
#include<cmath> using namespace std; int m[15][15]; void dfs(int x,int y,char t,int step)
{
m[x][y]=step;
if(t=='r')
{
if(m[x][y+1]==0)
dfs(x,y+1,t,step+1);
else if(m[x+1][y]==0)
dfs(x+1,y,'d',step+1);
}
if(t=='d')
{
if(m[x+1][y]==0)
dfs(x+1,y,t,step+1);
else if(m[x][y-1]==0)
dfs(x,y-1,'l',step+1);
}
if(t=='l')
{
if(m[x][y-1]==0)
dfs(x,y-1,'l',step+1);
else if(m[x-1][y]==0)
dfs(x-1,y,'u',step+1);
}
if(t=='u')
{
if(m[x-1][y]==0)
dfs(x-1,y,t,step+1);
else if(m[x][y+1]==0)
dfs(x,y+1,'r',step+1);
}
} int main()
{
int n;
cin>>n;
for(int i=0;i<=14;i++)
for(int j=0;j<=14;j++)
m[i][j]=-1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
m[i][j]=0;
dfs(1,1,'r',1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(m[i][j]<10) cout<<' ';
cout<<' '<<m[i][j];
}
cout<<endl;
} return 0;
}

P5731的更多相关文章

  1. P5731 蛇形方阵

    P5731 [深基5.习6]蛇形方阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //为什么用动态二维数组 --->To play to user's input, but ...

  2. 【LGR-(-8)】洛谷入门赛 #5 题解

    比赛链接 9道题. 注:题目名称中链接为题目链接,题号中链接为比赛内链接 题目编号 洛谷题号 题目名称 题目难度 A P5713 [深基3.例5]洛谷团队系统 \(\color{red}{入门}\) ...

随机推荐

  1. Detecting Unknown Encrypted Malicious Traffic in Real Time via Flow Interaction Graph Analysis

    1 前言 1.1 标题 Detecting Unknown Encrypted Malicious Traffic in Real Time via Flow Interaction Graph An ...

  2. 芯片SDC约束 -复制保存

    https://www.cnblogs.com/pcc-uvm/p/16996456.html?share_token=9651df97-e94c-4653-bf71-0a0fd6ca415e& ...

  3. vue-test --------ref

    <template> <div ref="contain">{{content}}</div> <button @click=" ...

  4. zookeeper JavaApi 删除节点

    /* * 删除节点 * 1.删除单个节点 * 2.删除带有子节点的节点 * 3.必须成功的删除 * 4.回调 * * */ @Test public void delete1() throws Exc ...

  5. 万界星空科技MES系统中的生产调度流程

      MES系统生产调度的目标是达到作业有序.协调.可控和高效的运行效果,作业计划的快速生成以及面向生产扰动事件的快速响应处理是生产调度系统的核心和关键. 为了顺利生成作业计划,需要为调度系统提供完整的 ...

  6. Python——第四章:闭包(Closure)、装饰器(Decorators)

    闭包: 本质, 内层函数对外层函数的局部变量的使用. 此时内层函数被称为闭包函数    1. 可以让一个变量常驻与内存,可随时被外层函数调用.    2. 可以避免全局变量被修改.被污染.更安全.(通 ...

  7. Lean大神编译的OpenWRT问题汇总

    1.初始密码为password,登录路由器后第一件事要修改默认密码 2.Lean大神编译的OpenWRT无法SSH.SFTP, 3.为了方便操作,一定要编译的时候安装TTYD,但是TTYD默认无法打开 ...

  8. 遍历菜单树得到所有菜单ids

    1.前言 在我们实现菜单管理页面的时候,有时候我们需要默认展开所有的菜单列表,但是因为后端有时候没有返回所有菜单ids数组. 而且我们也不容易获取到所有菜单ids,比如如果我们通过角色id查询到所有菜 ...

  9. 如何使用ffmpeg转换图片格式

    ffmpeg简介与图片格式介绍 windows安装ffmpeg,从如下网站下载release版本 https://www.gyan.dev/ffmpeg/builds/ ffmpeg 6.1版本仍然不 ...

  10. 原理一、Java中的HashMap的实现

    文章从JDK1.7和JDK1.8两个版本解析HashMap的实现原理及其中常见的面试题(两个版本HashMap最大的区别,1.7版HashMap=数组+链表,1.8版HashMap=数组+红黑树+链表 ...