返回一个二位整数数组中最大子数组的和
Posted tengda123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个二位整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。
设计思想
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
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; } } }
以上是关于返回一个二位整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章