给定一个包含 { 0 , 1 , # } 的N * M矩阵。任务是根据以下规则找到强度的最大值:
- 初始强度为零。
- 如果遇到0 ,则强度降低 2。
- 如果遇到1 ,则强度增加 5。
- 如果遇到# ,则跳转到新行的开头而不会失去任何强度。
注意:您必须从左到右以自上而下的顺序遍历矩阵的每一行。
例子:
Input:
{{1, 0, 1, 0},
{0, #, 0, 0},
{1, 1, 0, 0},
{0, #, 1, 0}}
Output: 14
Explanation:
Here you starts with strength S = 0.
For the first row {1, 0, 1, 0}:
After {1} -> S = S + 5 = 5
After {0} -> S = S - 2 = 3
After {1} -> S = S + 5 = 8
After {0} -> S = S - 2 = 6
For the Second row {0, #, 0, 0}:
After {0} -> S = S - 2 = 4
After {#} -> Jump to next row.
For the Third row {1, 1, 0, 0}:
After {1} -> S = S + 5 = 9
After {1} -> S = S + 5 = 14
After {0} -> S = S - 2 = 12
After {0} -> S = S - 2 = 10
For the Fourth row {0, #, 1, 0}:
After {0} -> S = S - 2 = 8
After {#} -> Jump to next row.
So, The maximum value of S is 14
方法:
- 从 i = [0, N], j = [0, M] 遍历矩阵 mat[][] 并检查:
If mat[i][j] = 0 then, S = S - 2.
If mat[i][j] = 1 then, S = S + 5.
If mat[i][j] = # then, jump to the next row.
- 在每一步存储到现在的最大强度值,并在最后打印强度。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
using namespace std;
// Function return the Maximum
// value of the strength
void MaxStrength(char mat[100][100],
int n, int m)
{
int S = 0;
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
char Curr = mat[i][j];
// If current element
// is 1
if (Curr == '1') {
S += 5;
}
// If current element
// is 0
if (Curr == '0') {
S -= 2;
}
// If current element
// is '#'
if (Curr == '#') {
break;
}
// Store the value of
// maximum strength
// till now
ans = max(ans, S);
}
}
cout << ans;
return;
}
// Driver code
int main()
{
int N = 4;
int M = 4;
char Mat[100][100]{ { '1', '0', '1', '0' },
{ '0', '#', '0', '0' },
{ '1', '1', '0', '0' },
{ '0', '#', '1', '0' } };
MaxStrength(Mat, N, M);
return 0;
}
Java
// Java program for the above approach
import java.io.*;
class GFG{
// Function return the maximum
// value of the strength
static void MaxStrength(char[][] mat,
int n, int m)
{
int S = 0;
int ans = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
char Curr = mat[i][j];
// If current element
// is 1
if (Curr == '1')
{
S += 5;
}
// If current element
// is 0
if (Curr == '0')
{
S -= 2;
}
// If current element
// is '#'
if (Curr == '#')
{
break;
}
// Store the value of
// maximum strength
// till now
ans = Math.max(ans, S);
}
}
System.out.println(ans);
return;
}
// Driver code
public static void main (String[] args)
{
int N = 4;
int M = 4;
char[][] Mat = { { '1', '0', '1', '0' },
{ '0', '#', '0', '0' },
{ '1', '1', '0', '0' },
{ '0', '#', '1', '0' } };
MaxStrength(Mat, N, M);
}
}
// This code is contributed by shubhamsingh10
Python3
# python3 program for the above approach
# Function return the Maximum
# value of the strength
def MaxStrength(mat, n, m):
S = 0
ans = 0
for i in range(n):
for j in range(m):
Curr = mat[i][j]
# If current element
# is 1
if (Curr == '1'):
S += 5
# If current element
# is 0
if (Curr == '0'):
S -= 2
# If current element
# is '#'
if (Curr == '#'):
break
# Store the value of
# maximum strength
# till now
ans = max(ans, S)
print(ans)
return
# Driver code
if __name__ == '__main__':
N = 4;
M = 4;
Mat = [ ['1', '0', '1', '0'],
['0', '#', '0', '0'],
['1', '1', '0', '0'],
['0', '#', '1', '0'] ]
MaxStrength(Mat, N, M)
# This code is contributed by Samarth
C#
// C# program for the above approach
using System;
class GFG{
// Function return the maximum
// value of the strength
static void MaxStrength(char[,] mat,
int n, int m)
{
int S = 0;
int ans = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
char Curr = mat[i, j];
// If current element
// is 1
if (Curr == '1')
{
S += 5;
}
// If current element
// is 0
if (Curr == '0')
{
S -= 2;
}
// If current element
// is '#'
if (Curr == '#')
{
break;
}
// Store the value of
// maximum strength
// till now
ans = Math.Max(ans, S);
}
}
Console.WriteLine(ans);
return;
}
// Driver code
public static void Main(String[] args)
{
int N = 4;
int M = 4;
char[,] Mat = { { '1', '0', '1', '0' },
{ '0', '#', '0', '0' },
{ '1', '1', '0', '0' },
{ '0', '#', '1', '0' } };
MaxStrength(Mat, N, M);
}
}
// This code is contributed by sapnasingh4991
Javascript
输出:
14
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live