本文共 2230 字,大约阅读时间需要 7 分钟。
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 24058 | Accepted: 13007 |
Description
Input
Output
Sample Input
6 9....#......#..............................#@...#.#..#.11 9.#..........#.#######..#.#.....#..#.#.###.#..#.#..@#.#..#.#####.#..#.......#..#########............11 6..#..#..#....#..#..#....#..#..###..#..#..#@...#..#..#....#..#..#..7 7..#.#....#.#..###.###...@...###.###..#.#....#.#..0 0
Sample Output
4559613
题意:问从@出发可以到的点的个数
简单搜索!!!
参考代码:
#include#include #include using namespace std;typedef long long ll;char map[22][22];bool used[22][22];int dp[22][22];int n,m;int dirx[]={ 0,-1,0,1};int diry[]={-1, 0,1,0};int dfs(int x,int y){ int sum=0; if (used[x][y]==true) return 0; if (dp[x][y]!=0) return dp[x][y]; used[x][y]=true; for (int i=0;i<4;i++){ int xx=x+dirx[i],yy=y+diry[i]; if (map[xx][yy]=='.' && used[xx][yy]==false && xx =0 && yy =0){ sum+=dfs(xx,yy); } } dp[x][y]=sum+1; return sum+1;}int main(){ while (cin>>n>>m){ if (n==0&&m==0) break; int x,y; memset(used,false,sizeof(used)); memset(dp,0,sizeof(dp)); for (int i=0;i >map[i][j]; if (map[i][j]=='@'){ x=i; y=j; } } } cout< <
转载地址:http://qfbqb.baihongyu.com/