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个数字,现 ...
随机推荐
- sublime text3 控制台 Package Control 的安装与使用方法
下载安装 sublime text3 直接网上搜sublime text3 下载即可,安装很简单 下一步就行,这里主要说明sublime text3 控制台 Package Control 的安装与使 ...
- IIS搭建负载均衡WebFarm+Arr
本文所述仅针对IIS7.0或更高版本 一.IIS简介 IIS( Internet Information Services),微软官方Windows平台上面web容器服务.支持http协议和ftp协议 ...
- 微信小程序-骰子游戏2
这是截图,类似与eclipse 的web 开发. 主界面可以自己编写程序. 可以压大压小等等,过年回家聚会的时候可以试试....
- pip问题:Traceback (most recent call last): File "/usr/bin/pip", line 9, in
源作者blog https://blog.csdn.net/vmxhc1314/article/details/81869676 编辑提示的文件,进行更改即可. 解决方法: 将 /usr/bin/pi ...
- LeetCodeTwo Sum IV 树的遍历+Hash大法好
题意 给定一颗二叉搜索树,返回是否存在两个节点的值之和为给定值K. 思路 同Two Sum.使用Hash表解决.只是要写个树的遍历而已,选取DFS. 源码 class Solution { publi ...
- python qrcode二维码生成与识别
二维码 二维码生成 1.用法 https://github.com/lincolnloop/python-qrcode 2.使用 简单实用 import qrcode # 二维码内容 data = & ...
- ubuntu 开启对.htaccess的支持
1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称,输入: rewrite 成功会提示 rewrite already load2. 修改/etc/apach ...
- [CF1034A] Two Rabbits - 数学
判断能否整除即可 #include <bits/stdc++.h> using namespace std; int x,y,a,b; int main() { int t; ios::s ...
- mybatis一级缓存和二级缓存(一)
一级缓存: 就是Session级别的缓存.一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中. 如果短时间内这个session(一定要同一个session)又做了同一个操作,那么h ...
- Namespace declaration statement has to be the very first statement or after
解决办法:将页面文件转为utp-8无dom格式就OK了.以notepad++为例: