AcWing 842. 排列数字
深搜的一道水题
https://www.acwing.com/problem/content/844/ 正确输入输出
#include<bits/stdc++.h>
using namespace std;
const int N=;
int path[N];
bool vis[N];
int n;
void dfs(int u) {
if(u==n) {
for(int i=; i<n; i++) {
cout<<path[i]<<" ";
}
cout<<endl;
return ; //回溯
}
for(int i=; i<=n; i++) {
if(!vis[i]) { //如果访问过
vis[i]=; //标记
path[u]=i; //记录此时的数字
dfs(u+); //下一步
vis[i]=; //清理现场
path[u]=;
}
}
}
int main() {
cin>>n;
dfs();
return ;
}
#include<bits/stdc++.h>
using namespace std;
const int N=;
int n,m;
int g[N][N]; //地图
int d[N][N]; //到起点的距离
typedef pair<int,int>PII;
PII q[N*N];//pair
PII Prev[N][N]; //用来记录x,y 这个点从哪个点过来,并输出路径
int bfs() {
int hh=,tt=; //hh 队头 ,tt 队尾
q[]= {,};
memset(d,-,sizeof d); //初始化
d[][]=; //起点到起点的距离为0
int dx[]= {-,,,}, dy[] = {,,,-};
while(hh<=tt) {
auto t = q[hh++]; //取出队头
for(int i=; i<; i++) {
int x=t.first+dx[i],y=t.second+dy[i];
if(x>=&&x<n&&y>=&&y<m&&g[x][y]==&&d[x][y]==-) { //为空地不是障碍物,而且没有走过,
Prev[x][y]=t; //记录从哪个个点过来
d[x][y]=d[t.first][t.second]+; //标记距离
q[++tt]= {x,y}; //在放进去
}
}
}
int x=n-,y=m-;
while(x||y) {
cout<<x<<" "<<y<<endl;
auto t=Prev[x][y];
x=t.first,y=t.second; //输出路径
}
return d[n-][m-];
}
int main() {
cin>>n>>m;
for(int i=; i<n; i++)
for(int j=; j<m; j++)
cin>>g[i][j];
cout<<bfs()<<endl;
return ;
}
AcWing 842. 排列数字的更多相关文章
- [AcWing 823] 排列
点击查看代码 #include<iostream> using namespace std; const int N = 10; int n; void dfs(int u, int nu ...
- HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
dp [ x ] [ y ] [ z ] 表示二进制y所表示的组合对应的之和mod x余数为z的最小数... 如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = ...
- AcWing 230. 排列计数 水题(组合数+错排)打卡
题目:https://www.acwing.com/problem/content/232/ #include<bits/stdc++.h> #define ll long long #d ...
- AcWing 339 .圆形数字
大型补档计划 题目链接 设 \(f[i][j]\) 表示二进制下,数字有 \(i\) 位, \(0\) 的个数 - \(1\) 的个数 \(=\) \(j\) 的方案数 \(f[0][0] = 1;\ ...
- 《挑战程序设计竞赛》——DFS
DFS(深度优先搜索) 简介 深度优先搜索(DFS,Depth-First Search)是搜索的手段之一.它从某个状态开始,不断的转移状态直到无法转移.然后退回到前一步的状态,继续转移到其他状态,如 ...
- 9月19日下午JavaScript数组冒泡排列和二分法
数组 一.冒泡排列 对数组attr = [1,8,6,4,5,3,7,2,9]进行由大到小排列,用冒泡排列的方法排列时,会对数组进行比较互换.如果前一个数字较大,这2个元素排列方式不变,如果后一个元素 ...
- JS数组2(冒泡排列、数组里面查找数据)
数组 一.冒泡排列 对数组attr = [1,8,6,4,5,3,7,2,9]进行由大到小排列,用冒泡排列的方法排列时,会对数组进行比较互换.如果前一个数字较大,这2个元素排列方式不变,如果后一个元素 ...
- js部分总结
1 currentStyle 可以获取行间样式,但是不兼容 其他浏览器用getComputedStyle(div,null)这个ie低级版本不兼容; if(div.currentStyle){ } e ...
- codeforces B. Color the Fence 解题报告
题目链接:http://codeforces.com/problemset/problem/349/B 题目意思:给定v升的颜料和9个需要花费ad 升的颜料,花费ad 升的颜料意味着得到第d个数字,现 ...
随机推荐
- 博客前端live2D实现
1.本来以为没那么简单,结果看了大佬的https://www.cnblogs.com/liuzhou1/p/10813828.html#4431992的简单明了.效果如下,可随鼠标移动. ①这里添加在 ...
- LOJ #6402. yww 与校门外的树 多项式求逆
蛮神的一道题. code: #include <cmath> #include <cstring> #include <algorithm> #include &l ...
- js替换时,空格被替换为双引号
替换代码 str.replace(/\"/g, "'") 将双引号替换为单引号,如果字符串中,存在space(空格)时,使用以上语句将会导致空格被替换为双引号,可以使用如 ...
- Vasya and a Tree CodeForces - 1076E
很好的思维 转化为对树上的深度差分 回朔的思想 对查询离线 #include<iostream> #include<cstdio> #include<cmath> ...
- CentOS 7 部署 Redis(单机版)
一.部署环境说明 软件 版本 安装包 CentOS 7.2 CentOS 7.2 Redis 4.0.14 redis-4.0.14.tar.gz 二.开始部署 安装gcc依赖 [root@bmsof ...
- java9小工具jshell
1.jshell是jdk9引入的小工具 2.启动jshell 在命令行输入jshell 3.使用jshell 比如定义a=10;b=20;输出a+b的结果,有如下两种方法 方法1:代码写在一行,回车直 ...
- linux100讲——80 系统函数库介绍
1.系统自建了函数库,可以在脚本中引用 /etc/init.d/functions 2.自建函数库 使用 source 函数脚本文件 “导入”函数 3. vim /etc/init.d/functio ...
- 1级搭建类110-Oracle 18c SI FS(Windows Server 2019)公开
Oracle 18c 单实例文件系统在Windows Server 2019上的安装 在线查看
- vue 查看dist文件里的结构
场景:优化打包后的代码,提高性能. 1.方式一:report-json. 1.1 package.json文件里加入以下命令, "report": "vue-cli-se ...
- 图片,base64 互转
import sun.misc.BASE64Decoder; import java.io.FileOutputStream; import java.io.OutputStream; /** * @ ...