Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- int n,m;
- int s;
- char grid[110][110];
- char com[50010];
- int ci, cj, dir;
- int mv[4][2] = {{-1,0}, {0,1},
- {1,0}, {0,-1}};
- int sticker;
- int main() {
- while (1) {
- scanf("%d %d %d", &n,&m,&s);
- if (!n && !m && !s) break;
- sticker=0;
- for (int i=0; i<n; i++)
- for (int j=0; j<m; j++)
- scanf(" %c", &grid[i][j]);
- for (int i=0; i<s; i++)
- scanf(" %c", &com[i]);
- for (int i=0; i<n; i++)
- for (int j=0; j<m; j++)
- if (isalpha(grid[i][j])) {
- ci = i, cj = j;
- switch (grid[i][j]) {
- case 'N': dir=0; break;
- case 'L': dir=1; break;
- case 'S': dir=2; break;
- case 'O': dir=3; break;
- }
- break;
- }
- for (int i=0; i<s; i++) {
- switch (com[i]) {
- case 'D': dir=(dir+1)%4; break;
- case 'E': dir=(dir+4-1)%4; break;
- case 'F':
- int ni, nj;
- ni=mv[dir][0]+ci;
- nj=mv[dir][1]+cj;
- if (ni<0 || ni>=n) break;
- if (nj<0 || nj>=m) break;
- if (grid[ni][nj]=='#') break;
- if (grid[ni][nj]=='*')
- sticker++, grid[ni][nj]='.';
- ci=ni, cj=nj;
- }
- }
- printf("%d\n", sticker);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement