您的位置:首页 > 其它

SDUT 1570 C 旅行(DFS)

2014-03-23 21:38 246 查看
点我看题目

题意 : 中文不详述。

思路 :就是DFS一下,只要到达终点条数就加1,然后再注意一下方向,因为我就是没注意方向WA了,只能向上向右走,x是行,所以向上是x-1,向右是y+1,因为我没弄好,结果就废了。。。。。。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

int m,n,sx,sy,ex,ey ;
int mapp[30][30] ;
int vis[30][30] ;
int dire[2][2] = {{0,1},{-1,0}} ;
int cnt ;

void DFS(int x,int y)
{
if(x == ex && y == ey)
{
cnt++ ;
return ;
}
else
{
for(int i = 0 ; i < 2 ; i++)
{
int xx = x+dire[i][0] ;
int yy = y+dire[i][1] ;
if(!mapp[xx][yy] && xx >= 1 && xx <= m && yy >= 1 && yy <= n && !vis[xx][yy])
{
vis[xx][yy] = 1 ;
DFS(xx,yy) ;
vis[xx][yy] = 0 ;
}
}
}
}
int main()
{
while(~scanf("%d %d",&m,&n))
{
memset(vis,0,sizeof(vis)) ;
for(int i = 1 ; i <= m ; i++)
for(int j = 1 ; j <= n ; j++)
scanf("%d",&mapp[i][j]) ;
sx = m,sy = 1 ;
ex = 1,ey = n ;
vis[sx][sy] = 1;
cnt = 0 ;
DFS(sx,sy) ;
printf("%d\n",cnt) ;
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: