0
点赞
收藏
分享

微信扫一扫

【C语言指南】C语言内存管理 深度解析

海牙秋天 2024-11-18 阅读 13

作业:

#include <iostream>
using namespace std;
bool b[100][100]={0};
char map[100][100]={0};
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int n,m;
int sx,sy,ex,ey;
int mink=2147483647;
void dfs(int,int,int);
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>map[i][j];
			if(map[i][j]=='S'){
				sx=i;sy=j;
			}
			if(map[i][j]=='T'){
				ex=i;ey=j;
			}
		}
	}
	dfs(sx,sy,0);
	cout<<mink<<endl;;
	return 0;
}
void dfs(int x,int y,int k){
	if(x==ex&&y==ey){
		mink=min(k,mink);
		return;
	}
	
	for(int i=0;i<4;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(b[nx][ny]==0&&map[nx][ny]!=0&&map[nx][ny]!='#'){
			b[nx][ny]=1;
			dfs(nx,ny,k+1);
			b[nx][ny]=0;
		}
		
	}
	
	
}

 

#include <iostream>
using namespace std;
bool used[20]={0};//0-9
int r[20];
int l,sl;//1-n,l num
void dfs(int,int,int,int);
int main(){
	cin>>l>>sl;
	dfs(l,0,sl,-1);
	
	return 0;
}
void dfs(int n,int k,int sl,int last){
	if(k>=sl){
		for(int i=0;i<sl;i++){
			cout<<r[i]+1<<' ';
		}
		cout<<endl;
		return;
	}
	
	for(int i=last+1;i<n;i++){
		if(used[i]==0){
			r[k]=i;
			used[i]=1;
			dfs(n,k+1,sl,i);
			used[i]=0;
			
		}
	}
	
	
}
举报

相关推荐

0 条评论