POJ 1573
2015-06-10 16:33
274 查看
#include<iostream> #include<stdio.h> #define MAXN 15 using namespace std; char _m[MAXN][MAXN]; bool mark[MAXN][MAXN]; int record[MAXN][MAXN]; int r; int c; void dfs(int i,int j); int main() { //freopen("acm.acm","r",stdin); int i; int j; int place; while(cin>>r>>c>>place) { if(!r && !c && !place) break; -- place; memset(mark,false,sizeof(mark)); // memset(record,0,sizeof(record)); for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { record[i][j] = 1; } } for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { cin>>_m[i][j]; } } record[0][place] = 1; mark[0][place] = true; dfs(0,place); // for(i = 0; i < r; ++ i) // { // for(j = 0; j < c; ++ j) // { // cout<<record[i][j]<<" "; // } // cout<<endl; // } } } void fun_1(int num); void fun_2(int num,int num_1); void dfs(int i,int j) { int tem1; int tem2; if(_m[i][j] == 'E') { if(j + 1 < c) { if(!mark[i][j+1]) { mark[i][j+1] = true; record[i][j+1] += record[i][j]; dfs(i,j+1); return ; } else { fun_2(record[i][j+1]-1,record[i][j]-record[i][j+1]+1); return ; } } else { fun_1(record[i][j]); return ; } }/////////////////////// if(_m[i][j] == 'S') { if(i + 1 < r) { if(!mark[i+1][j]) { mark[i+1][j] = true; record[i+1][j] += record[i][j]; dfs(i+1,j); return ; } else { fun_2(record[i+1][j]-1,record[i][j]-record[i+1][j]+1); return ; } } else { fun_1(record[i][j]); return ; } }////////////////////////////// if(_m[i][j] == 'W') { if(j - 1 >= 0) { if(!mark[i][j-1]) { mark[i][j-1] = true; record[i][j-1] += record[i][j]; dfs(i,j-1); return ; } else { fun_2(record[i][j-1]-1,record[i][j]-record[i][j-1]+1); return ; } } else { fun_1(record[i][j]); return ; } }/////////////////////////////////////////// if(_m[i][j] == 'N') { if(i - 1 >= 0) { if(!mark[i-1][j]) { mark[i-1][j] = true; record[i-1][j] += record[i][j]; dfs(i-1,j); return; } else { fun_2(record[i-1][j]-1,record[i][j]-record[i-1][j]+1); return ; } } else { fun_1(record[i][j]); return ; } } } void fun_1(int num) { cout<<num; // if(num != 1) cout<<" step(s) to exit"<<endl; // else // cout<<" step to exit"<<endl; } void fun_2(int num,int num_1) { cout<<num; // if(num != 1) cout<<" step(s) before a loop of "; // else // cout<<" step before a loop of "; cout<<num_1; // if(num_1 != 1) cout<<" step(s)"<<endl; // else // cout<<" step"<<endl; }
相关文章推荐
- 下决心不犹豫
- Cocos2d-x 2.2.3 + Visual studio 2013 + python2.7.5开发环境搭建
- Linux 平台下 MySQL 5.5 安装 说明 与 示例
- SAT数学公式之几何图形
- php 设计模式
- [Python]项目打包:5步将py文件打包成exe文件
- 用gdb调试core文件
- DM8127+IMX185宽动态问题
- ASP.NET运行环境配置
- 【VBScript】MsgBox()函数
- MapReduce错误处理,任务调度及Shuffle过程
- POJ 1507
- POJ 1547
- POJ 1552
- struts2 页面标签或ognl表达式取值--未完待续
- linux命令总结
- CSS中float的使用说明
- ps4将图片弄成透明图片
- mysql怎么让一个存储过程定时执行
- POJ 1538