hdu3500 DFS

news/2024/11/17 7:33:42/

两个DFS()~~~

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char map[10][10];
int xx[4]={0,1,0,-1};
int yy[4]={1,0,-1,0};
struct node
{int x,y;int dir;
};
node res[10000];
void fling(int x,int y,int i)
{int nx=x+xx[i];int ny=y+yy[i];int flag=0;if(nx<0||nx>=7||ny<0||ny>=8){map[x][y]='X';return ;}while(map[nx][ny]=='X'){nx=nx+xx[i];ny=ny+yy[i];if(nx<0||nx>=7||ny<0||ny>=8){flag=1;break;}}if(flag){map[x][y]='X';return ;}map[x][y]='X';map[nx-xx[i]][ny-yy[i]]='O';fling(nx,ny,i);return ;
}
int dfs(int sum,int k)
{if(sum==1){return 1;}char t_map[10][10];memcpy(t_map,map,sizeof(map));int x,y;for(x=0;x<7;x++){for(y=0;y<8;y++){if(map[x][y]=='X')continue;int i;for(i=0;i<4;i++){int nx=x+xx[i];int ny=y+yy[i];if(nx<0||nx>=7||ny<0||ny>=8)continue;if(map[nx][ny]=='O')continue;int flag=0;while(map[nx][ny]=='X'){nx=nx+xx[i];ny=ny+yy[i];if(nx<0||nx>=7||ny<0||ny>=8){flag=1;break;}}if(flag)continue;map[x][y]='X';map[nx-xx[i]][ny-yy[i]]='O';fling(nx,ny,i);res[k].x=x;res[k].y=y;res[k].dir=i;if(dfs(sum-1,k+1))return 1;memcpy(map,t_map,sizeof(t_map));}}}return 0;
}
int main()
{char temp[10];int cas=0;while(scanf("%s",temp)!=EOF){cas++;int i,j;for(i=0;i<8;i++)map[0][i]=temp[i];for(i=1;i<7;i++)scanf("%s",map[i]);int sum=0;for(i=0;i<7;i++){for(j=0;j<8;j++){if(map[i][j]=='O')sum++;}}memset(res,-1,sizeof(res));dfs(sum,0);if(cas!=1)printf("\n");printf("CASE #%d:\n",cas);for(i=0;res[i].dir!=-1;i++){char c;if(res[i].dir==0)c='R';else if(res[i].dir==1)c='D';else if(res[i].dir==2)c='L';else if(res[i].dir==3)c='U';printf("%d %d %c\n",res[i].x,res[i].y,c);}}return 0;
}



http://www.ppmy.cn/news/182318.html

相关文章

hdu5500

参考链接&#xff1a;官方题解 这道题&#xff0c;不知道为什么&#xff0c;凭直觉写出来后ac&#xff0c;&#xff08;好神奇&#xff09;后来看题解才明白证明&#xff1a;首先每个数如果挪的话最多挪一次&#xff0c;其次必须先挪大的再挪小的&#xff0c;最后如果一个数上…

尼康D5100使用设置及技巧,同样也适用尼康D5200

尼康D5100使用设置及技巧&#xff0c;同样也适用尼康D5200&#xff0c;希望对新手能有点帮助。 一、设置 1&#xff0e;优化校准&#xff1a;可以在menu菜单中找到它&#xff0c;一般使用"标准"就可以&#xff0c;建议将"标准"的锐度调3&#xff0c;对比…

喷一下,关于 东芝 G900 和 软银 X01T 用到的nVidia GeForce 5500

东芝 Toshiba G900 &#xff08;A.K.A Softbank X01T&#xff09;在网上和群里很多人都说&#xff1a; 有没有nVidia GeForce 5500 的显卡驱动&#xff1f;我想说的是&#xff0c;没有人承诺会有这样的驱动更新&#xff0c;除非东芝出新的ROM版本&#xff0c;提升视频性能。其实…

hdu5900

2016沈阳网络赛 题目链接 题意是一开始没搞清楚,给n对数字,然后每对数字有一个key 一个value,如果当两个连着的数字key不互质的话,那么这两个数字可以消去,同时可以获得这两个数字的value,而且消去后旁边两个数字也是连起来了,有点类似于消消乐. 搞懂题意后应该很明显可以看…

Super-resolution:Camera Lens Super-Resolution(论文解读二十)

Title&#xff1a;Camera Lens Super-Resolution From&#xff1a;CVPR2019 Note data&#xff1a;2019/07/31 Abstract&#xff1a;从相机的角度研究SR&#xff0c;减小分辨率和视野域的内在权衡&#xff08;焦距&#xff09;&#xff0c;使用更加真实的H-L分辨率的数据集&…

Makefile路径处理:执行路径、绝对路径与相对路径的处理

问题描述 最近编写了一个 编译设备树 的 Makefile&#xff0c;遇到了使用 make -f xx/Makefile&#xff0c;执行路径变了&#xff0c;造成 Makefile 里面的一些操作路径不正确&#xff0c;无法执行 获取当前目录 make 内置的 $(CURDIR)&#xff0c;可以把当前路径的全路径打印…

超分走进真实数据

NTIRE 2019 Challenge on Real Image Super-Resolution 随着NTIRE 2019 关于真实数据进行单帧超分的比赛结束&#xff0c;2019 年关于超分有两个关键词&#xff0c;“远近数据对” 和 Raw数据&#xff1a; 1 人们开始通过长远焦或者远近拍摄来构建真实的超分数据&#xff0c…

25 strlen 的调试

前言 同样是一个 很常用的 glibc 库函数 不管是 用户业务代码 还是 很多类库的代码, 基本上都会用到 字符串长度的计算 不过 我们这里是从 具体的实现 来看一下 它的实现 主要是使用 汇编 来进行实现的, 因此 理解需要一定的基础 测试用例 就是简单的使用了一下 strc…