Responsive Ads Here

Tuesday, 9 May 2017

Trace path problem http://practice.geeksforgeeks.org/problems/trace-path/0

problem id :- http://practice.geeksforgeeks.org/problems/trace-path/0

code:-

#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
    {
    int n,m;
    cin>>n>>m;
    --n,--m;
    int num1=n,num2=m;
    int n1=-n,m1=-m;
    int x=0,y=0,flag=1;
    string str;
    cin>>str;
    int i=0;
    while(str[i])
        {
        switch(str[i])
            {
            case 'L':
                --x;
                break;
            case 'R':
                ++x;
                break;
            case 'U':
                ++y;
                break;
            case 'D':
                --y;
                break;
            }
        if(x>m || x<m1 || y>n || y<n1)
            {
            flag=0;
            break;
            }
        if(x>0)
            m1=max(m1,-num2+x);
        else
            m=min(num2+x,m);
        if(y>0)
            n1=max(n1,-num1+y);
        else
            n=min(num1+y,n);
        ++i;
        }
    cout<<flag<<'\n';
    }

return 0;
}

No comments:

Post a Comment