EOJ 2855 贪吃蛇 [2011年研究生机试 热身]
2013-03-22 22:03
281 查看
模拟题
#include <cstdio> #include <cstring> #include <cstdlib> #include <vector> #include <cmath> #include <iostream> #include <algorithm> #include <functional> #include <string> #include <map> #include <cctype> using namespace std; int f[1010]; int h,w,t; void init() { f[0]=0;f[1]=1; for(int i=2;i<=1005;i++) { f[i]=(f[i-1]+f[i-2])%4; } } int gox[4]={-1,0,1,0}; int goy[4]={0,1,0,-1}; char mmap[110][110]; int dfs(int x,int y,int step) { if(step==t+1) return 0; int res=0; if(mmap[x][y]!='.') res=mmap[x][y]-'0'; //printf("t=%d --> %d %d %d\n",step,x,y,res); int nx=gox[f[step]]+x; int ny=goy[f[step]]+y; int r=1; //printf("t=%d bef----> %d %d\n",step,nx,ny); while(nx<0||nx>=h||ny<0||ny>=w) { nx=gox[(f[step]+r)%4]+x; ny=goy[(f[step]+r)%4]+y; //printf("t=%d cag----> %d %d\n",step,nx,ny); r++; } return dfs(nx,ny,step+1)+res; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); init(); while(scanf("%d %d %d",&h,&w,&t)!=EOF) { for(int i=0;i<h;i++) { scanf("%s",mmap[i]); } printf("%d\n",dfs(0,0,0)); } return 0 ; }
相关文章推荐
- EOJ 2856 仰望星空 [2011年研究生机试 热身]
- EOJ 2857 编辑距离 [2011年研究生机试 热身]
- EOJ 2610 工程 [2010研究生机试-热身]
- EOJ 2143 端午节快乐 [2010研究生机试-热身]
- 2011年浙江大学计算机及软件工程研究生机试真题
- EOJ 2537 统计字符 [2010年研究生机试]
- 2011年清华大学计算机研究生机试真题之四
- EOJ 2690 Soda Surpler [2010年研究生机试]
- 1004 Median(2011年浙江大学计算机及软件工程研究生机试真题)
- 2011年清华大学计算机研究生机试真题之四
- 2011年吉林大学计算机研究生机试真题
- EOJ 2782 Welcome to 2009 ACM selective trial [2010年研究生机试]
- 九度题目1088:剩下的树 2011年清华大学计算机研究生机试真题
- 题目1056:最大公约数(2011年哈尔滨工业大学计算机研究生机试真题)
- 2011年北京大学计算机研究生机试真题(dijkstra+优先队列)
- 2011年浙江大学计算机及软件工程研究生机试真题(1)
- EOJ 2568 Sum of digit [2009年研究生机试]
- 2011年浙江大学计算机及软件工程研究生机试真题(2)
- 清华大学2011年研究生机试-九度OJ1088-剩下的树
- EOJ 2569 Capitalize [2009年研究生机试]