7.29
2026-07-29 19:05:50
发布于:上海
//美味头文件->
#include <bits/stdc++.h>
using namespace std;
int main(){
return 0;
}
//深搜模版!!!!----1
// 右 下 左 上
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int x,y,n,m;
void dfs(){
if(x==n&&y==m){//这狗东西不需要存在
flag=1;
return;
}
for(int i=0;i<4;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
//如果没有出界
if(nx>=1&&nx<=n&&ny>=1&&ny<=m){
}
}
}
//深搜模版----2
int n,m;//地图大小n*m
char a[50][50];//地图
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int vis[50][50];//标记数组
bool flag;
//"神"搜函数->
void dfs(int x,int y){
if(x==n&&y==m){//这个东西不需要存在
flag=1;
return;
}
for(int i=0;i<4;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m){//没有出界
if(a[nx][ny]=='.'){//新邻居是道路
if(!vis[nx][ny]){//新邻居未标记
vis[nx][ny]=1;
dfs(nx,ny);
}
}
}
}
}
//深搜模版----2----(main函数)
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
vis[1][1]=1;
dfs(1,1);\
if(flag) cout<<"YES";
else cout<<"NO";
return 0;
}
//细胞类题目
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
char a[1010][1010];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void dfs(int x,int y){
a[x][y]='0';
for(int i=0;i<4;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]!='0'){
dfs(nx,ny);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]!='0') a[i][j]='1';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='1'){
ans++;
dfs(i,j);
}
}
}
cout<<ans;
return 0;
}
//最短路线
#include <bits/stdc++.h>
using namespace std;
int n,m,ans=1000000;
char a[20][20];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int vis[20][20];
void dfs(int x,int y,int step){
if(x==n&&y==m){
ans=min(ans,step);
}
for(int i=0;i<4;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]=='.'&&!vis[nx][ny]){
vis[nx][ny]=1;
dfs(nx,ny,step+1);
vis[nx][ny]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
vis[1][1]=1;
dfs(1,1,0);
if(ans==1000000) cout<<-1;
else cout<<ans;
return 0;
}
//全排列类题目
#include <bits/stdc++.h>
using namespace std;
int n,a[20],vis[20];
void dfs(int x){
if(x==n+1){
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
vis[i]=1;
a[x]=i;
dfs(x+1);
vis[i]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}
//文件判题模版
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
fclose(stdin);
fclose(stdout);
//骂帖主请用 S12K 喷,骂的越多越好
这里空空如也



















有帮助,赞一个