私信TA
用户名:yin19990129
访问量:23002
签 名:
这次一定不水了!
自我简介:
作者: 少年Q 发表时间:2020-04-09 18:50:33 浏览:445 | 评论:0
que; que.push(p(sx,sy)); d[sx][sy]=0; f[sx][sy]=1; while(que.size()){ q=que.front(); que.pop(); if(q.first==gx&&q.second==gy){ break; } for(int i=0;i<4;i++){ nx=q.first+dx[i]; ny=q.second+dy[i]; if(1<=nx&&nx<=5&&1<=ny&&ny<=5&&a[nx][ny]!='*'){ f[nx][ny]+=f[q.first][q.second]; if(d[nx][ny]==inf){ d[nx][ny]=0; que.push(p(nx,ny)); } } } } return f[gx][gy]; } int main(){ int ans; for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ cin>>a[i][j]; if(a[i][j]=='S'){ gx=i; gy=j; } d[i][j]=inf; } } ans=bfs(); cout< p; pairq; c++里的pair用法补充: pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如STL中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一种结构体,主要的两个成员变量是first, second 因为是使用struct不是class,所以可以直接使用pair的成员变量。 此外,网友还给出了这题的dfs题解版本,代码如下: ```cpp #include using namespace std; const int INF = 100000000; int minS = INF; int a[100],n = 5; char G[30][30]; bool visited[30][30]; int dx[4] = {1,-1,0,0}; int dy[4] = {0,0,1,-1}; void DFS(int i,int j,int step){ // visited[i][j] = true; if(G[i][j] == 'S'){ if(step<=minS){ //找最小的步数,有多种相同的情况,所以要小于或等于 minS = step; a[minS]++; } return; } visited[i][j] = true; for(int k = 0;k<4;k++){ //四个方向 int nx = i+dx[k]; int ny = j+dy[k]; if(0<=nx&&nx>G[i][j]; } DFS(0,0,0); // cout<0){ cout<
0.0分
3 人评分
看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:
编程语言转换
万能编程问答
代码解释器
代码纠错
SQL生成与解释