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

Posted tengda123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个二位整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。

 

 

 

技术分享图片

 

设计思想


1.设计窗口:使用了textboxbuttonLabel窗口控件

技术分享图片

 

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

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[] { " " }, 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;         }     } }

 

 

 


以上是关于返回一个二位整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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