码迷,mamicode.com
首页 > 其他好文 > 详细

结对开发6----首尾相连矩阵

时间:2015-04-03 00:06:52      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

结对成员:范德一    赵永恒

一.题目与要求

  题目、返回一个二维整数数组中最大子数组的和

  要求、1、输入一个二维整形数组,数组里有正数也有负数。

     2、二维数组首尾相接,象个一条首尾相接带子一样。

     3、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和

二.设计思路

  在上一次的以为循环数组的基础上,和二维数组求最大子数组相结合,将功能合并,完成题目要求。

  • 第一步、将每一行的数组作为循环数组求最大子数组
  • 第二步、通过枚举的方式,将每一种情况的和存入到新建二维数组中
  • 第三部、通过逐列计算最大子数组的方法求所有子矩阵的最大和

三.源代码

//

#include "stdafx.h"
#include "iostream"
#include <vector> 
using namespace std; 
   
const int N = 101; 
int a[N][N], p[N][N],b[N][N]; 
   
int MaxRecSum(int n) 
{ 
    for (int i = 0; i <= n; ++i) 
    { 
        p[i][0] = 0; 
        p[0][i] = 0; 
    }    
    for (int i = 1; i <= n; ++i) 
    { 
        for (int j = 1; j <= n; ++j) 
            p[i][j] = p[i-1][j] + p[i][j-1] - p[i-1][j-1] +a[i][j]; 
    } 
   
    int max = INT_MIN; 
    for (int i = 1; i <= n; ++i) 
    { 
        for (int j = i; j <= n; ++j) 
        { 
            int sum = 0; 
            for (int k = 1; k <= n; ++k) 
            { 
                int temp = p[j][k] - p[j][k-1] - p[i-1][k] + p[i-1][k-1]; 
                if (sum > 0) 
                    sum += temp; 
                else 
                    sum = temp; 
                if (sum > max) 
                    max = sum; 
            } 
        } 
    } 
    return max; 
} 
   
int main() 
{ 

    int n = 3; 
    int num; 
    cout<<"矩阵的规格为三行三列,请输入数值:"<<endl;
    for (int i = 1; i <= n; ++i) 
    { 
        for (int j = 1; j <= n; ++j) 
        { 
            cin >> num; 
            a[i][j] = num; 
        } 
    } 
      
   int b[3][6];

   for(int t=0;t<3;t++)
   {
	   b[t][0]=a[t][0];
	   b[t][1]=a[t][1];
	   b[t][2]=a[t][2];


	   b[t][3]=b[t][0];
	   b[t][4]=b[t][1];
	   b[t][5]=b[t][2];
   }

    cout <<"最大矩阵的和为:"<< MaxRecSum(n) << endl; 
     
    for (int i = 1; i <= n; ++i) 
    { 
        for (int j = 1; j <= n; ++j) 
        { 
            cout <<a[i][j]<<"   ";
        } 
        cout<<endl;
    } 
    return 0; 
}

 四.运行截图

 技术分享

技术分享

五.实验感想

这次实验的实现,时间有一点紧凑,所以功能方面还有许多不足的地方,程序的优化也足够的改善,相信有更多的时间的话,我们能做得更好。

六.结对成员合照

 技术分享

结对开发6----首尾相连矩阵

标签:

原文地址:http://www.cnblogs.com/myblog1993/p/4388671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!