多题目

寻路问题:N*N矩阵,其中0是表示可以走的,1表示无法走,矩阵由二维数组表示,角是入口,右下角是出口,只能横着走和竖着走,要求找出最短路径

#include<bits/stdc++.h>

using namespace std;

int mymax-10000:

int £[4][2]={{-1,0}1,11.01.10.-1},[0,1}}

int a[20][20],v[20][20].~1[20][20];

int 1=1;

int n://矩阵的规模

bool check(int xl,int yl} {

if(x1<0|lx1>=n|  1   )return falsei

if(a[x1][y1]--11l  2  ))return false:

returh true;

void dfs(int x,int y)(

if(xmmn-1&&ymmn-1){

if(l<mymax){

mymаx=l;

memcpy[v1,v,sizaof(v1});

return;

forlint k=Ó;k<4;k++){

int x1,y1;

x1=x+3

yi-y+ ④

if(checkix1,y1))

5

6

dfs(x1,y1);

7

v[x1][y1]-0r

int main ()

cin>>ni

for(int i=0 i<n i++){

for【int im0 j =0 j<n j++)

cin>>a[±][j];

dfs(0,0);

int d-vi[n-1][n-1]

,int x=n-l,y=n-1;

int k;

int qn[400][2];

qn[o][o]-n-1;

qn[0][1]-n-1;

£or(k=1;;k++){

x=x-f[d][0];y-y-f[d][1];qn[k][0]-x;qn[k][1]-y;d=v1[x][y];if(x==0&&y==0)break;

for(int i=k;i>=0;i--)

cout<<

<<endl;

return 0;

£or(k=1;;k++){

x=x-f[d][0];y-y-f[d][1];qn[k][0]-x;qn[k][1]-y;d=v1[x][y];if(x==0&&y==0)break;

for(int i=k;i>=0;i--)

cout<<

<<endl;

return 0;

for(k=1;;k++){

x=x-f[d][0];

y-y-f[d][1];

qn[k][0]-x;qn[k][1]-y;

d=v1[x][y];

if(x==0&&y==0)break;

for(int i=k;i>=0;i--)

cout<<

<<endl;

return 0;


第1题 单选

1处和2处填

A.

.y1<=0lly1>n 和 v[x1][y1]>0

B.

.y1<0|ly1>=n和vx1[y1]>0

C.

.y1>0&&y1<=n 和 v[x1][y1]>0

D.

yl>0&&y1<n 和 v[x1 ][y1]>0

第2题 单选

3处和4处填

A.

.f[k][0]和 f[k][1]

B.

f[k][1]和f[k][0]

C.

f[0][k]和£[1][k]

D.

f[1][k]和 f[0][k]

第3题 单选

5处填

A.

.v[x1][y1]=k+1

B.

vlxlLyl]=k

C.

v[x][y]=k;

D.

v[x][y]=k+1;

第4题 单选

6处和7处填

A.

l++和 l--

B.

k++和 k--

C.

x1++和 x1--

D.

y1++和 y1--

第5题 单选

8处和9处填

A.

qn[i][1]和 qn[i][2]

B.

 qn[i][0]和 qn[i][1]

C.

qn[1][i]和 qn[2][i]

D.

qn[0][i]和 qn[1][i]

发表评论

登录 后再回复