0
已解决
李思远
中级守护
中级守护
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
int a[30],used[30],n,r;
void dfs(int t){
for(int i=1;i<=n;i++)
{
if(used[i]==0)
{
a[t]=i;
used[i]=1;
dfs(t+1);
used[i]=0;
}
}
if(t==r)
{
for(int i=1;i<=r;i++)
cout<<a[i]<<" ";
cout<<"\n";
return ;
}
}
int main()
{
cin>>n>>r;
dfs(1);
return 0;
}
为啥错?
李思远在2020-04-22 21:38:07追加了内容
介个……
李思远在2020-05-01 20:37:36追加了内容
咳咳,发错了,是这个
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
char map[20][20];
int vis[20][20],n,m,fx,fy;
int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
void dfs(int x,int y,int t){
if(x==fx&&y==fy)
{
cout<<t;
return ;
}
for(int i=0;i<=3;i++)
{
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(map[nx][ny]=='.'&&nx>=1&&nx<=n&&ny>=1&&ny<=m&&vis[nx][ny]==0)
{
vis[nx][ny]=1;
dfs(nx,ny,t+1);
}
}
}
int main()
{
int sx,sy;
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;
}
else if(map[i][j]=='T')
{
fx=i;
fy=j;
}
}
}
vis[sx][sy]=1;
dfs(sx,sy,1);
return 0;
}
李思远在2020-07-08 20:11:50追加了内容
谁来回答呀!!!
0
已采纳
徐子玄
初级光能
初级光能
最小步数!!
if(x==fx&&y==fy)
{
cout<<t;
return ;
}
改为
if(x==fx && y==fy) {
if(mn>t)
mn=t;
ans++;
return ;
}
最后在
vis[sx][sy]=1;
dfs(sx,sy,1);
后加
if(ans!=0)
cout << mn;
else cout<<-1;
即可AC!!
望采纳!!
0
0
0
0
0
0
0
0
0
0
邓涵睿
中级天翼
中级天翼