zoukankan      html  css  js  c++  java
  • 矩阵置零

        题意是要求在01矩阵中,把0的点的行和列都置零。

    #include <iostream>
    #include <vector>
    #include <utility>
     
    using namespace std;
     
    void unguarded_setZero(int *matrix, int m, int n, int i, int j)
    {
        for (int ii = 0; ii < m; ++ii)
        {
            *(matrix + ii * n + j) = 0;
        }
     
        for (int jj = 0; jj < n; ++jj)
        {
            *(matrix + i * n + jj) = 0;
        }
    }
     
    void solve(int *matrix, int m, int n)
    {
        if (matrix == NULL || m <= 0 || n <= 0)
        {
            return;
        }
     
        vector<pair<int, int> > vecZero;
     
        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                if (*(matrix + i * n  + j) == 0)
                {
                    vecZero.push_back(make_pair(i, j));
                }
            }
        }
     
        for (vector<pair<int, int> >::const_iterator it = vecZero.begin();
            it != vecZero.end();
            ++it)
        {
            const int i = it->first;
            const int j = it->second;
     
            unguarded_setZero(matrix, m, n, i, j);
        }
    }
     
    int main(int argc, char **argv)
    {
        int matrix[][6] =
        {
            {1, 1, 0, 1, 1, 1},
            {0, 1, 1, 1, 0, 1},
            {1, 1, 1, 1, 1, 1}
        };
     
        solve((int *)matrix, 3, 6);
     
        for (size_t i = 0; i < sizeof(matrix) / sizeof(*matrix); ++i)
        {
            for (size_t j = 0; j < sizeof(*matrix) / sizeof(**matrix); ++j)
            {
                cout << matrix[i][j] << " ";
            }
     
            cout << endl;
        }
    }
  • 相关阅读:
    意见汇总
    软件工程团队项目第一次Sprint评审
    《Gogoing》Alpha版使用说明
    5月21日冲刺结束
    5月17日--5月20日站立会议
    5月12日--5月16站立会议
    山药蛋团队每日站立会议
    山药蛋团队成员一周冲刺详细计划表
    站立会议 第十天
    站立会议 第九天
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2709654.html
Copyright © 2011-2022 走看看