您的位置:首页 > 其它

ECNUOJ 2855 贪吃蛇

2015-07-05 12:33 441 查看
[b]贪吃蛇[/b]

Time Limit:1000MS Memory Limit:65536KB
Total Submit:480 Accepted:109

Description

#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;
char table[maxn][maxn];
int H,W,T,f[1001] = {0,1};
const int dir[4][2] = {-1,0,0,1,1,0,0,-1};
bool isIn(int x,int y){
return x < H && x >= 0 && y >= 0 && y < W;
}
int solve(){
int life = isdigit(table[0][0])?table[0][0] - '0':0,nowdir = 0,time = 0;
int x = 0,y = 0;
while(time < T){
int nx = x + dir[nowdir = f[time]][0];
int ny = y + dir[f[time]][1];
while(!isIn(nx,ny)){
nowdir++;
nx = x + dir[nowdir%4][0];
ny = y + dir[nowdir%4][1];
}
x = nx;
y = ny;
time++;
if(isdigit(table[x][y])) life += table[x][y] - '0';
}
return life;
}
int main(){
for(int i = 2; i < 1001; ++i)
f[i] = (f[i-1] + f[i-2])%4;
while(~scanf("%d%d%d",&H,&W,&T)){
for(int i = 0; i < H; ++i)
scanf("%s",table[i]);
printf("%d\n",solve());
}
return 0;
}


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