Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. #define FOR(i, s, e) for(int i=s; i<e; i++)
  5. #define loop(i, n) for(int i=0; i<n; i++)
  6. #define getint(n) scanf("%d", &n)
  7. #define pb(a) push_back(a)
  8. #define ll long long int
  9. #define dd double
  10. #define SZ(a) int(a.size())
  11. #define read() freopen("input.txt", "r", stdin)
  12. #define write() freopen("output.txt", "w", stdout)
  13. #define mem(a, v) memset(a, v, sizeof(a))
  14. #define all(v) v.begin(), v.end()
  15. #define pi acos(-1.0)
  16. #define pf printf
  17. #define sf scanf
  18. #define mp make_pair
  19. #define paii pair<int, int>
  20. #define padd pair<dd, dd>
  21. #define pall pair<ll, ll>
  22. #define fr first
  23. #define sc second
  24. #define getlong scanf("%lld",&n)
  25. #define CASE(n) printf("Case %d: ",++n)
  26. #define inf 1000000000
  27. #define EPS 1e-9
  28.  
  29. using namespace std;
  30.  
  31. int fx[]={0,0,1,-1,1,1,-1,-1};
  32. int fy[]={1,-1,0,0,1,-1,1,-1};
  33.  
  34. char g[105][105];
  35. int n,m,ans,s;
  36. string ss;
  37.  
  38. int dfs(int u,int v,int x,int y,int ind)
  39. {
  40.     if(u>=n||u<0||v>=m||v<0||g[u][v]=='#')
  41.         return 0;
  42.     if(g[u][v]=='*'){
  43.         ans++;
  44.         g[u][v]='.';
  45.     }
  46.     for(int i=ind;i<s;i++)
  47.     {
  48.         if(ss[i]=='D')
  49.         {
  50.             if(y==v&&x!=u)
  51.             {
  52.                 if(u>x)
  53.                 {
  54.                     x++;
  55.                     y++;
  56.                 }
  57.                 else
  58.                 {
  59.                     x--;
  60.                     y--;
  61.                 }
  62.             }
  63.             else if(x==u&&y!=v)
  64.             {
  65.                 if(v>y)
  66.                 {
  67.                     x--;
  68.                     y++;
  69.                 }
  70.                 else
  71.                 {
  72.                     x++;
  73.                     y--;
  74.                 }
  75.             }
  76.         }
  77.         else if(ss[i]=='E')
  78.         {
  79.             if(y==v&&x!=u)
  80.             {
  81.                 if(u>x)
  82.                 {
  83.                     x++;
  84.                     y--;
  85.                 }
  86.                 else
  87.                 {
  88.                     x--;
  89.                     y++;
  90.                 }
  91.             }
  92.             else if(x==u&&y!=v)
  93.             {
  94.                 if(v>y)
  95.                 {
  96.                     x++;
  97.                     y++;
  98.                 }
  99.                 else
  100.                 {
  101.                     x--;
  102.                     y--;
  103.                 }
  104.             }
  105.         }
  106.         else
  107.         {
  108.             if(u==x&&v!=y)
  109.             {
  110.                 if(v>y)
  111.                 {
  112.                     dfs(x,y,x,y-1,i+1);
  113.                 }
  114.                 else
  115.                     dfs(x,y,x,y+1,i+1);
  116.             }
  117.             else if(v==y&&u!=x)
  118.             {
  119.                 if(u>x)
  120.                     dfs(x,y,x-1,y,i+1);
  121.                 else
  122.                     dfs(x,y,x+1,y,i+1);
  123.             }
  124.  
  125.         }
  126.     }
  127. }
  128.  
  129. int main()
  130. {
  131.     //read();
  132.     while(cin>>n>>m>>s)
  133.     {
  134.         if(!n &&!m&&!s)
  135.             break;
  136.         int st1,st2,st,en;
  137.         loop(i,n)
  138.         {
  139.             loop(j,m){
  140.             cin>>g[i][j];
  141.             }
  142.         }
  143.         ans=0;
  144.         cin>>ss;
  145.         loop(i,n)
  146.         {
  147.             loop(j,m)
  148.             {
  149.             if(g[i][j]=='N')
  150.             {
  151.                 dfs(i,j,i-1,j,0);
  152.                 break;
  153.             }
  154.             else if(g[i][j]=='S')
  155.             {
  156.                 dfs(i,j,i+1,j,0);
  157.                 break;
  158.             }
  159.             else if(g[i][j]=='O')
  160.             {
  161.                 dfs(i,j,i,j-1,0);
  162.                 break;
  163.             }
  164.             else if(g[i][j]=='L')
  165.             {
  166.                 dfs(i,j,i,j+1,0);
  167.                 break;
  168.             }
  169.             }
  170.         }
  171.         ss.clear();
  172.         cout<<ans<<endl;
  173.     }
  174.  
  175.     return 0;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement