给定一个具有N行M列的矩阵。任务是根据每一列中零个数的增加来打印给定矩阵的列索引。
例如,如果第一列包含2个零,则第二列包含1个零,而第三列不包含任何零。然后输出将是3、2、1。
注意:矩阵被认为具有基于1的索引。
例子:
Input : mat[N][M] ={{0, 0, 0},
{0, 2, 0},
{0, 1, 1},
{1, 1, 1}};
Output : 2 3 1
No. of zeroes in first col: 3
No. of zeroes in second col: 1
No of zeroes in third col: 2
Therefore, sorted order of count is 1 2 3
and their corresponding column numbers are, 2 3 1
Input: mat[N][M] ={{0, 0, 0},
{0, 0, 3},
{0, 1, 1}};
Output : 3 2 1
方法:
- 创建一个成对向量,以在每列中存储零计数。该对中的第一个元素是count,而该对中的第二个元素是对应的列索引。
- 遍历矩阵列。
- 在对向量中插入每一列的零计数。
- 根据零的计数对对的向量进行排序。
- 打印该对中的第二个元素,其中包含根据零计数排序的列的索引。
下面是上述方法的实现:
C++
// C++ Program to print the index of columns
// of the given matrix based on the
// increasing number of zeroes in each column
#include
using namespace std;
#define N 4 // rows
#define M 3 // columns
// Function to print the index of columns
// of the given matrix based on the
// increasing number of zeroes in each column
void printColumnSorted(int mat[N][M])
{
// Vector of pair to store count of zeroes
// in each column.
// First element of pair is count
// Second element of pair is column index
vector > colZeroCount;
// Traverse the matrix column wise
for (int i = 0; i < M; i++) {
int count = 0;
for (int j = 0; j < N; j++) {
if (mat[j][i] == 0)
count++;
}
// Insert the count of zeroes for each column
// in the vector of pair
colZeroCount.push_back(make_pair(count, i));
}
// Sort the vector of pair according to the
// count of zeroes
sort(colZeroCount.begin(), colZeroCount.end());
// Print the second element of the pair which
// contain indexes of the sorted vector of pair
for (int i = 0; i < M; i++)
cout << colZeroCount[i].second + 1 << " ";
}
// Driver Code
int main()
{
int mat[N][M] = { { 0, 0, 0 },
{ 0, 2, 0 },
{ 0, 1, 1 },
{ 1, 1, 1 } };
printColumnSorted(mat);
return 0;
}
Java
// Java program to print the index of columns
// of the given matrix based on the increasing
// number of zeroes in each column
import java.io.*;
import java.util.*;
class GFG{
static int N = 4;
static int M = 3;
// Function to print the index of columns
// of the given matrix based on the increasing
// number of zeroes in each column
static void printColumnSorted(int[][] mat)
{
// Vector of pair to store count of zeroes
// in each column.First element of pair is
// count.Second element of pair is column index
ArrayList<
ArrayList> colZeroCount = new ArrayList<
ArrayList>();
// Traverse the matrix column wise
for(int i = 0; i < M; i++)
{
int count = 0;
for(int j = 0; j < N; j++)
{
if (mat[j][i] == 0)
{
count++;
}
}
// Insert the count of zeroes for
// each column in the vector of pair
colZeroCount.add(new ArrayList(
Arrays.asList(count,i)));
}
// Sort the vector of pair according to the
// count of zeroes
Collections.sort(colZeroCount,
new Comparator>()
{
@Override
public int compare(ArrayList o1,
ArrayList o2)
{
return o1.get(0).compareTo(o2.get(0));
}
});
// Print the second element of the pair which
// contain indexes of the sorted vector of pair
for(int i = 0; i < M; i++)
{
System.out.print(
(colZeroCount.get(i).get(1) + 1) + " ");
}
}
// Driver Code
public static void main(String[] args)
{
int[][] mat = { { 0, 0, 0 }, { 0, 2, 0 },
{ 0, 1, 1 }, { 1, 1, 1 } };
printColumnSorted(mat);
}
}
// This code is contributed by avanitrachhadiya2155
Python3
# Python3 program to print the index of
# columns of the given matrix based
# on the increasing number of zeroes
# in each column
# Rows
N = 4
# Columns
M = 3
# Function to print the index of columns
# of the given matrix based on the
# increasing number of zeroes in
# each column
def printColumnSorted(mat):
# Vector of pair to store count
# of zeroes in each column.
# First element of pair is count
# Second element of pair is column index
colZeroCount = []
# Traverse the matrix column wise
for i in range(M):
count = 0
for j in range(N):
if (mat[j][i] == 0):
count += 1
# Insert the count of zeroes for
# each column in the vector of pair
colZeroCount.append((count, i))
# Sort the vector of pair according
# to the count of zeroes
colZeroCount = sorted(colZeroCount)
# Print the second element of the
# pair which contain indexes of the
# sorted vector of pair
for i in range(M):
print(colZeroCount[i][1] + 1, end = " ")
# Driver Code
if __name__ == '__main__':
mat = [ [ 0, 0, 0 ],
[ 0, 2, 0 ],
[ 0, 1, 1 ],
[ 1, 1, 1 ] ]
printColumnSorted(mat)
# This code is contributed mohit kumar 29
输出:
2 3 1