返回一个二位整数数组中最大子数组的和(小组成员:滕达,侯诚超)

小组成员:侯诚超,滕达

设计思想


1.设计窗口:使用了textbox,button,Label窗口控件

2.程序编辑:(1).先编写txt导入程序,确保txt文件能导入到文本框中

(2).将txt中的数据放到二维数组中

(3).计算该数组的最大子数组和

(4).将数组的行数和列数还有最大子数组和输出

3.调试和运行程序

出现的问题

1.txt文件无法显示到文本框中

2.没有将string类型的二维数组转化为整数int类型

3.行数和列数不能正确的输出

解决方法

1. 声明文本读取流,以文本编码格式读取,StreamReader sr = new StreamReader(file.FileName, System.Text.Encoding.Default);

2.将string类型转化为int类型,intlist[i - 2] = Array.ConvertAll<string, int>(str[i].Split(‘,‘), p => { return int.Parse(p); });

3.textBox2.Text = Convert.ToString(a);  a是从文本框中取的行数

运行结果

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace 二维数组
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int i, j;
            string[] str = textBox1.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            int[][] intlist = new int[str.Length][];
            for (i = 2; i < str.Length; i++)
            {

                intlist[i - 2] = Array.ConvertAll<string, int>(str[i].Split(‘,‘), p => { return int.Parse(p); });
            }
            int a = (int)Convert.ToDouble(str[0]);
            int b = (int)Convert.ToDouble(str[1]);
            int[]sum = new int[100];
            int max=0,m=0;
            int result=intlist[0][0];
            for (i = 0; i < a; i++)//确定子数组的最大上界(为第i行)
            {
                while (m + i < a)//确定子数组有m+i行
                {
                    //把子数组当成一位数组一样,求最大子数组的和
                    for (j = 0; j < b; j++)
                    {
                        sum[j] = sum[j] + intlist[m + i][j];

                    }
                    max = 0;
                    for (j = 0; j < b; j++)
                    {
                        if (max + sum[j] > sum[j])
                        {
                            max = max + sum[j];
                        }
                        else
                        {
                            max = sum[j];
                        }
                        if (max > result)
                        {
                            result = max;
                        }
                    }
                    m++;//是子数组的行数+1
                }
                m = 0;
                for (j = 0; j < b; j++)
                {
                    sum[j] = 0;
                }
            }
            textBox2.Text = Convert.ToString(a);
            textBox3.Text = Convert.ToString(b);
            textBox4.Text = Convert.ToString(result);

        }

        private void txt文件ToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();   //声明打开文件对话框类file
            file.Filter = "文本文件|*.txt";               //文件过滤器,只显示txt文件
            if (file.ShowDialog() == DialogResult.OK)     //如果文件正常打开
            {
                StreamReader sr = new StreamReader(file.FileName, System.Text.Encoding.Default);   //声明文本读取流,以文本编码格式读取
                textBox1.Text = sr.ReadToEnd();    //将sr中的内容全部放到textBox1.Text中
                sr.Close();
            }
            else
                return;
        }
    }
}

原文地址:https://www.cnblogs.com/tengda123/p/9826023.html

时间: 2024-10-21 14:49:03

返回一个二位整数数组中最大子数组的和(小组成员:滕达,侯诚超)的相关文章

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

题目:返回一个二维整数组中最大子数组的和 实验思路 根据老师上课给出的3*6的数据 我们决定设计一个3*6行的二维数组进行计算,依次进行比较 将最大子数组的和返回 代码 1 #include <iostream.h> 2 int main() 3 { 4 int a[3][6];//定义一个3*6的二维数组 5 int max; 6 int s;//求和 7 int count; 8 int b[3][7]; 9 cout<<"请输入二维数组(3*6)中的元素:"

返回一个二维整数数组中最大子数组的和(圆柱形)

题目: 返回一个二维整数数组中最大子数组的和 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 组员: 陈晨:负责代码复审和代码测试计划 王颖瑞:负责程序分析,代码编程 思路: 本次的任务是二维数组的环状求最大子数组,结合前两次的开发经验我们把一维数组环状的思路继续在二维数组中使用,首先输入数组时令数组的列扩大一倍,也就是令数组后的数组长度的值与前边的数

结对开发之返回一个二维整数数组中最大联通子数组的和

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 2 #include<iostream.h> 3 int main(int argc, char* argv[]

返回一个二维整数数组中最大联通子数组的和6

1 问题:返回一个二维整数数组中最大联通子数组的和 2 思路:对n*m的二维数组进行分解,分解为n个一维数组,再先求这n个一维数组的最大子数组和,并记下每行最大一维子数组的下标如2-5,这是就会分两种情况第一种是行之间的最大子数组是相连的,如第一行是2-5,第二行是3-6,这是直接相加就行.第二种是不相连的如第一行是2-5,第二行是6-7,这时候就把每行的最大子数组看成一个整体,再使每个最大数组块进行相连,求使其相连的最小代价.最后就可求出最大联通子数组的和. 3 代码 #include<ios

返回一个首尾相接的二维整数数组中最大子数组的和

一.题目:返回一个二维整数数组中最大子数组的和. 二.要求: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数组的和的最大值. 三.解题思路: 将两个同样的数组首尾相接合并成一个数组,在用以前求二维数组最大子数组的方法求解 四.源代码: #include<iostream> using namespace std; #include"math

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

题目:返回一个二维整数数组中最大子数组的和.要求:输入一个二维整形数组,数组里有正数也有负数.      二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和.      求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求:两人结对完成编程任务.              一人主要负责程序分析,代码编程.              一人负责代码复审和代码测试计划.              发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照)

返回一个二维整数数组中最大子数组的和(头尾相接)

1.题目. 题目:返回一个二维整数数组中最大子数组的和.要求:输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n). 2.设计思想. 分别求出每一行的最大子矩阵,然后再两行相加,求出最大子矩阵,一直到所有的行相加,求出最大子矩阵.比较其中最大的子矩阵值,找出最大的. 3.代码. #include<iostream> using namespace

返回一个二维整数数组中最大子数组的和2

题目:返回一个二维整数数组中最大子数组的和2 要求:输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 思路: 代码: 截图: 总结:

结对开发之《返回一个二维整数数组中最大子数组的和》

一.题目要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划.发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照).(截止到周四4月9日24:00) 二.编程思路 我们的思路比较简单,采用的是将