给出一组命令U(向上)、D(向下)、L(左)和R(右)以及矩阵中的初始单元格位置(x,y)。按照给定的命令,在矩阵中找到对象的最终单元位置。假设矩阵中存在最终所需的单元位置。 例子 :
null
Input : command[] = "DDLRULL" x = 3, y = 4Output : (1, 5)Input : command[] = "LLRUUUDRRDDDULRLLUDUUR" x = 6, y = 5Output : (6, 3)
资料来源: Flipkart面试(SDE-1校园面试)。
方法: 以下是步骤:
- 分别计算U(向上)、D(向下)、L(左)和R(右)移动的杯形、cdown、CLIFT和cright。
- 计算最终的_x=x+(克里特-分裂)和最终的_y=y+(cdown-杯)。
最终单元格位置为(final_x,final_y)
C++
// C++ implementation to find the final cell position // in the given matrix #include <bits/stdc++.h> using namespace std; // function to find the final cell position // in the given matrix void finalPos( char command[], int n, int x, int y) { // to count up, down, left and cright // movements int cup, cdown, cleft, cright; // to store the final coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for ( int i = 0; i < n; i++) { if (command[i] == 'U' ) cup++; else if (command[i] == 'D' ) cdown++; else if (command[i] == 'L' ) cleft++; else if (command[i] == 'R' ) cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); cout << "Final Position: " << "(" << final_x << ", " << final_y << ")" ; } // Driver program to test above int main() { char command[] = "DDLRULL" ; int n = ( sizeof (command) / sizeof ( char )) - 1; int x = 3, y = 4; finalPos(command, n, x, y); return 0; } |
JAVA
// Java implementation to find // the final cell position // in the given matrix import java.util.*; import java.lang.*; import java.io.*; class GFG { // function to find the // final cell position // in the given matrix static void finalPos(String command, int n, int x, int y) { // to count up, down, left // and cright movements int cup, cdown, cleft, cright; // to store the final // coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0 ; // traverse the command array for ( int i = 0 ; i < n; i++) { if (command.charAt(i) == 'U' ) cup++; else if (command.charAt(i) == 'D' ) cdown++; else if (command.charAt(i)== 'L' ) cleft++; else if (command.charAt(i) == 'R' ) cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); System.out.println( "Final Position: " + "(" + final_x + ", " + final_y + ")" ); } // Driver Code public static void main(String []args) { String command = "DDLRULL" ; int n = command.length(); int x = 3 , y = 4 ; finalPos(command, n, x, y); } } // This code is contributed // by Subhadeep |
C#
// C# implementation to find // the final cell position // in the given matrix class GFG { // function to find the // final cell position // in the given matrix static void finalPos( string command, int n, int x, int y) { // to count up, down, left // and cright movements int cup, cdown, cleft, cright; // to store the final // coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for ( int i = 0; i < n; i++) { if (command[i] == 'U' ) cup++; else if (command[i] == 'D' ) cdown++; else if (command[i]== 'L' ) cleft++; else if (command[i] == 'R' ) cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); System.Console.WriteLine( "Final Position: " + "(" + final_x + ", " + final_y + ")" ); } // Driver Code public static void Main() { string command = "DDLRULL" ; int n = command.Length; int x = 3, y = 4; finalPos(command, n, x, y); } } // This code is contributed // by mits |
PHP
<?php // PHP implementation to find the final // cell position in the given matrix // function to find the final cell // position in the given matrix function finalPos( $command , $n , $x , $y ) { // to count up, down, left and // cright movements $cup ; $cdown ; $cleft ; $cright ; // to store the final coordinate // position $final_x ; $final_y ; $cup = $cdown = $cleft = $cright = 0; // traverse the command array for ( $i = 0; $i < $n ; $i ++) { if ( $command [ $i ] == 'U' ) $cup ++; else if ( $command [ $i ] == 'D' ) $cdown ++; else if ( $command [ $i ] == 'L' ) $cleft ++; else if ( $command [ $i ] == 'R' ) $cright ++; } // calculate final values $final_x = $x + ( $cright - $cleft ); $final_y = $y + ( $cdown - $cup ); echo "Final Position: " . "(" . $final_x . ", " . $final_y . ")" ; } // Driver Code $command = "DDLRULL" ; $n = strlen ( $command ); $x = 3; $y = 4; finalPos( $command , $n , $x , $y ); // This code is contributed // by Akanksha Rai |
Javascript
<script> // JavaScript implementation to find // the final cell position // in the given matrix // function to find the // final cell position // in the given matrix function finalPos(command, n, x, y) { // to count up, down, left // and cright movements let cup, cdown, cleft, cright; // to store the final // coordinate position let final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for (let i = 0; i < n; i++) { if (command[i] == 'U' ) cup++; else if (command[i] == 'D' ) cdown++; else if (command[i]== 'L' ) cleft++; else if (command[i] == 'R' ) cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); document.write( "Final Position: " + "(" + final_x + ", " + final_y + ")" ); } // driver code let command = "DDLRULL" ; let n = command.length; let x = 3, y = 4; finalPos(command, n, x, y); </script> |
输出:
Final Position: (1, 5)
时间复杂性 :O(n),在哪里 是命令数。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END