added shortest path problem
parent
70e71a7718
commit
83398e41e8
|
@ -0,0 +1,100 @@
|
||||||
|
/* given a long route containing N,S,E,W direction
|
||||||
|
find the shortest path to reach the location
|
||||||
|
sample input : S,N,N,N,E,W,E
|
||||||
|
Sample Output : N,N,E
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* simply analyze the problem in the form of a graph and you are at the origin at (0,0)
|
||||||
|
and x is east , -x is west , y is south , -y is north now if its south you will move on y
|
||||||
|
axis by one position and keep on doing as per the input once you reach destination you
|
||||||
|
will get a quadrant and your exact location supose you are at (2,-4) position now you
|
||||||
|
know you have to move 2 position east and 4 position south to reach the destination */
|
||||||
|
|
||||||
|
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
char direction[1000];
|
||||||
|
cout << "Enter the direction in caps without space " << endl;
|
||||||
|
cin.getline(direction, 1000);
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
int y = 0;
|
||||||
|
|
||||||
|
for (int i = 0; direction[i] != '\0'; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (direction[i])
|
||||||
|
{
|
||||||
|
|
||||||
|
case 'E':
|
||||||
|
x++;
|
||||||
|
break;
|
||||||
|
case 'W':
|
||||||
|
x--;
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
y++;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
y--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x >= 0 && y >= 0)
|
||||||
|
{
|
||||||
|
while (y--)
|
||||||
|
{
|
||||||
|
cout << "N"
|
||||||
|
<< " ";
|
||||||
|
}
|
||||||
|
while (x--)
|
||||||
|
{
|
||||||
|
cout << "E"
|
||||||
|
<< " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (x <= 0 && y <= 0)
|
||||||
|
{
|
||||||
|
while (x++)
|
||||||
|
{
|
||||||
|
cout << "E"
|
||||||
|
<< " ";
|
||||||
|
}
|
||||||
|
while (y++)
|
||||||
|
{
|
||||||
|
cout << "S"
|
||||||
|
<< " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (x <= 0 && y >= 0)
|
||||||
|
{
|
||||||
|
while (x++)
|
||||||
|
{
|
||||||
|
cout << "w"
|
||||||
|
<< " ";
|
||||||
|
}
|
||||||
|
while (y--)
|
||||||
|
{
|
||||||
|
cout << "N ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (x--)
|
||||||
|
{
|
||||||
|
cout << "E ";
|
||||||
|
}
|
||||||
|
while (y++)
|
||||||
|
{
|
||||||
|
cout << "S ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue