陪伴孩子成长学习的地方 ------ 扫码添加微信

完善程序

 

(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。 
输入第一行包含两个整数m和n,即矩阵的行数和列数。之后m行,每行n个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(最后一空4分,其余3分,共16分) 
比如在如下这个矩阵中: 
4 4 
0 -2 -7 0 
9 2 -6 2 
-4 1 -4 1 
-1 8 0 -2 
拥有最大和的子矩阵为: 
9 2 
-4 1 
-1 8 
其和为15 

3 3 
-2 10 20
-1 100 -2
0 -2 -3
最大子矩阵和为128 

4 4 
0 -2 -9 -9
-9 11 5 7
-4 -3 -7 -6
-1 7 7 5
最大子矩阵和为26

#include <iostream> 

using namespace std; 

const int SIZE = 100; 
int matrix[SIZE + 1][SIZE + 1]; 
int rowsum[SIZE + 1][SIZE + 1]; //rowsum[i][j]记录第i行前j个数的和 
int m, n, i, j, first, last, area, ans; 

int main() 
  { 
    cin >> m >> n; 
    for(i = 1; i <= m; i++) 
      for(j = 1; j <= n; j++) 
        cin >> matrix[i][j]; 
    ans = matrix————1——————; 
    for(i = 1; i <= m; i ++) 
      ——————2——————; 
    for(i = 1; i <= m; i++) 
      for(j = 1; j <= n; j++) 
        rowsum[i][j] =——————3——————; 
    for(first = 1; first <= n; first++) 
      for(last = first; last <= n; last++) 
        { 
          ——————4——————; 
          for(i = 1; i <= m; i++) 
            { 
              area +=——————5——————; 
              if(area > ans) 
                ans = area; 
              if(area < 0) 
                area = 0; 
            } 
        } 
    cout << ans << endl; 
    return 0; 
  }

 

(打印月历)输入月份m(1≤m≤12),按一定格式打印2015年第m月的月历。(第三、四空2.5分,
其余3分)
例如,2015年1月的月历打印效果如下(第一列为周日):
S   M   T   W   T   F   S
                1   2   3
4   5   6   7   8   9   10
11  12  13  14  15  16  17
18  19  20  21  22  23  24
25  26  27  28  29  30  31
#include <iostream>
#include <string>
using namespace std;
const int dayNum[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int m, offset, i;
int main()
{
cin >> m;
cout << "S\tM\tT\tW\tT\tF\tS" << endl; //'\t'为TAB制表符
⑴ ;
for(i = 1; i < m; i++)
offset = ⑵ ;
for(i = 0; i < offset; i++)
cout << '\t';
for(i = 1; i <= ⑶ ; i++)
{
cout << ⑷ ;
if(i == dayNum[m] || ⑸ == 0)
cout << endl;
else
cout << '\t';
}

 

posted @ 2019-08-06 19:32  极光编程小助手  阅读(552)  评论(0)    收藏  举报