在3 x 3矩阵中给定9个元素,其中对角线的值为0 。我们需要找到对角线中的值,以使每一行,每一列和对角线的总和相等。
例子:
Input:
0 3 6
5 0 5
4 7 0
Output:
6 3 6
5 5 5
4 7 4
Explanation:
Now the value of the sum of
any row or column is 15
Input:
0 4 4
4 0 4
4 4 0
Output:
4 4 4
4 4 4
4 4 4
方法:
- 假设对角线是x,y和z。
- x的值将是(x 2,3 + x 3,2 )/ 2。
- z的值将是(x 1,2 + x 2,1 )/ 2。
- y的值将为(x + z)/ 2。
下面是上述方法的实现:
程序:
C++
// C++ program to implement
// the above problem
#include
using namespace std;
// Function to print the matrix
void print(int arr[3][3])
{
int i = 0, j = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
cout << arr[i][j] << " ";
cout << endl;
}
}
// Function to find the diagonal values
void find(int arr[3][3])
{
arr[0][0] = (arr[1][2] + arr[2][1]) / 2;
arr[2][2] = (arr[0][1] + arr[1][0]) / 2;
arr[1][1] = (arr[0][0] + arr[1][1]) / 2;
// Print the new matrix with diagonals
cout << "Matrix with diagonals:\n";
print(arr);
}
// Driver code
int main()
{
// Initialize all the elements of a matrix
int arr[3][3] = { { 0, 54, 48 },
{ 36, 0, 78 },
{ 66, 60, 0 } };
cout << "Matrix initially:\n";
print(arr);
find(arr);
return 0;
}
Java
// Java program to implement
// the above problem
class GFG
{
// Function to print the matrix
static void print(int arr[][])
{
int i = 0, j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
System.out.print( arr[i][j] + " ");
System.out.println();
}
}
// Function to find the diagonal values
static void find(int arr[][])
{
arr[0][0] = (arr[1][2] + arr[2][1]) / 2;
arr[2][2] = (arr[0][1] + arr[1][0]) / 2;
arr[1][1] = (arr[0][0] + arr[1][1]) / 2;
// Print the new matrix with diagonals
System.out.print( "Matrix with diagonals:\n");
print(arr);
}
// Driver code
public static void main(String args[])
{
// Initialize all the elements of a matrix
int arr[][] = { { 0, 54, 48 },
{ 36, 0, 78 },
{ 66, 60, 0 } };
System.out.print( "Matrix initially:\n");
print(arr);
find(arr);
}
}
// This code is contributed by Arnab Kundu
Python3
# Python3 program to implement
# the above problem
# Function to print the matrix
def print_(arr, n):
for i in range(n):
for j in range(n):
print(arr[i][j], end = " ")
print("\n", end= "")
# Function to find the diagonal values
def find(arr, n):
arr[0][0] = (arr[1][2] + arr[2][1]) // 2
arr[2][2] = (arr[0][1] + arr[1][0]) // 2
arr[1][1] = (arr[0][0] + arr[1][1]) // 2
print("\nMatrix with diagonals:")
print_(arr, n)
# Driver code
arr = [[0, 54, 48],
[36, 0, 78],
[66, 60, 0]]
n = 3
print("Matrix initally:")
print_(arr, n)
find(arr, n)
# This code is contributed by Shrikant13
C#
// C# program to implement
// the above problem
using System;
class GFG
{
// Function to print the matrix
static void print(int [,]arr)
{
int i = 0, j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
Console.Write( arr[i, j] + " ");
Console.WriteLine();
}
}
// Function to find the diagonal values
static void find(int [,]arr)
{
arr[0, 0] = (arr[1, 2] + arr[2, 1]) / 2;
arr[2, 2] = (arr[0, 1] + arr[1, 0]) / 2;
arr[1, 1] = (arr[0, 0] + arr[1, 1]) / 2;
// Print the new matrix with diagonals
Console.Write( "Matrix with diagonals:\n");
print(arr);
}
// Driver code
public static void Main()
{
// Initialize all the elements of a matrix
int [,]arr = { { 0, 54, 48 },
{ 36, 0, 78 },
{ 66, 60, 0 } };
Console.Write( "Matrix initially:\n");
print(arr);
find(arr);
}
}
// This code is contributed by Ryuga
PHP
Javascript
输出:
Matrix initially:
0 54 48
36 0 78
66 60 0
Matrix with diagonals:
69 54 48
36 34 78
66 60 45
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。