返回一個二位整數數組中最大子數組的和(小組成員:滕達,侯誠超)
阿新 • • 發佈:2018-10-21
格式 esp clas length tool ++ mage 宋體 組成
小組成員:侯誠超,滕達
設計思想
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; } } }
返回一個二位整數數組中最大子數組的和(小組成員:滕達,侯誠超)