细胞在基质中的最终位置

给出一组命令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校园面试)。

方法: 以下是步骤:

  1. 分别计算U(向上)、D(向下)、L(左)和R(右)移动的杯形、cdown、CLIFT和cright。
  2. 计算最终的_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),在哪里 n  是命令数。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享