zoukankan      html  css  js  c++  java
  • 最大子矩阵

      1 #include "stdafx.h"
      2 #include <iostream>
      3 #include <stdio.h>
      4 #include <vector>
      5 #include <assert.h>
      6 
      7 using namespace std;
      8 vector<int> vec;
      9 
     10 int Char2Int(char *a, int n);
     11 char LastChar(char *a, int n);
     12 
     13 typedef struct tagMatrixInfo
     14 {
     15     int i32nLine;
     16     int i32nCol;
     17 
     18     tagMatrixInfo()
     19     {
     20         i32nLine = i32nCol = 0;
     21     }
     22 }S_MatrixInfo;
     23 
     24 
     25 S_MatrixInfo GetMax2X2Matrix(int **ppMatrix, int nLine, int nCol)
     26 {
     27     assert(ppMatrix);
     28     assert(nLine >= 2);
     29     assert(nCol >= 2);
     30 
     31     S_MatrixInfo sMaxMatrixInfo;
     32 
     33     int nMaxValue = 0, nTempValue = 0;
     34     for (int i32I = 0; i32I < nLine - 1; i32I++)
     35     {
     36         for (int i32J = 0; i32J < nCol - 1; i32J++)
     37         {
     38             nTempValue += (ppMatrix[i32I][i32J] + ppMatrix[i32I][i32J + 1]);
     39             nTempValue += (ppMatrix[i32I + 1][i32J] + ppMatrix[i32I + 1][i32J + 1]);
     40 
     41             if (nTempValue > nMaxValue)
     42             {
     43                 nMaxValue = nTempValue;
     44                 sMaxMatrixInfo.i32nLine = i32I;
     45                 sMaxMatrixInfo.i32nCol = i32J;
     46             }
     47             nTempValue = 0;
     48         }
     49     }
     50 
     51     return sMaxMatrixInfo;
     52 }
     53 
     54 int main(void)
     55 {
     56 
     57     int i32I = 0, i32J = 0;
     58     int i32nLine = 0, i32nCol = 0;
     59     char temp[10];
     60     char a;
     61     int count = 0,temp1=0;
     62     while (a=cin.get() != '
    ')
     63     {
     64         cin.unget();
     65         cin >> temp;
     66 
     67         if (LastChar(temp,10) == ';')
     68         {
     69             if (i32nCol == 0)
     70             {
     71                 i32nCol = vec.size()+1;
     72             }
     73             i32nLine++;
     74         }
     75         vec.push_back(Char2Int(temp, 8));
     76     }
     77     i32nLine++;
     78     cout << i32nLine << "行," << i32nCol << "列。" << endl;
     79     vector<int>::iterator it;
     80     for (it = vec.begin(); it != vec.end(); it++)
     81     {
     82         count++;
     83         if (count%i32nCol == 0)
     84         {
     85             cout << *it << ' '<<endl;
     86         }
     87         else
     88         {
     89             cout << *it << ' ';
     90         }
     91         
     92     }
     93 
     94     int **ppMatrix = new int *[i32nLine];
     95     assert(ppMatrix);
     96 
     97     for (i32I = 0; i32I < i32nLine; i32I++)
     98     {
     99         ppMatrix[i32I] = new int[i32nCol];
    100         assert(ppMatrix[i32I]);
    101 
    102         for (i32J = 0; i32J < i32nCol; i32J++)
    103         {
    104              ppMatrix[i32I][i32J]=vec[i32I*i32nCol+i32J];
    105         }
    106     }
    107 
    108     S_MatrixInfo sMaxMatrixInfo = GetMax2X2Matrix(ppMatrix, i32nLine, i32nCol);
    109     cout << endl << "最大的二维矩阵为:" << endl;
    110     for (i32I = sMaxMatrixInfo.i32nLine; i32I < sMaxMatrixInfo.i32nLine + 2; i32I++)
    111     {
    112         for (i32J = sMaxMatrixInfo.i32nCol; i32J < sMaxMatrixInfo.i32nCol + 2; i32J++)
    113         {
    114             cout << ppMatrix[i32I][i32J] << " ";
    115         }
    116         cout << endl;
    117     }
    118 
    119     return 0;
    120 
    121 
    122 }
    123 
    124 int Char2Int(char *a, int n)
    125 {
    126     if (a == NULL)
    127     {
    128         return 0;
    129     }
    130     int i = 0;
    131     int result = 0;
    132     while (a[i] != NULL)
    133     {
    134         if (a[i] != ';')
    135         {
    136             result *= 10;
    137             result += a[i] - '0';
    138 
    139         }
    140         i++;
    141 
    142 
    143     }
    144     return result;
    145 
    146 }
    147 
    148 char LastChar(char *a, int n)
    149 {
    150     int i = 0;
    151     int j = 0;
    152     while (a[i] != NULL)
    153     {
    154         j = i;
    155         i++;
    156     }
    157 
    158     return a[j];
    159 }

     

  • 相关阅读:
    idea 插件之 SequenceDiagram
    idea 中添加mybatis的mapper文件模板
    springBoot 中 logback配置文件详解
    Mysql show processlist、show profiles 排查问题
    input 输入框效验
    Java基础之comparator和comparable的区别以及使用
    mysql sql使用记录
    mysql 优化之索引的使用
    IDEA 中常用快捷键的使用
    form表单中method的get和post区别
  • 原文地址:https://www.cnblogs.com/hhboboy/p/4844524.html
Copyright © 2011-2022 走看看