1. 程式人生 > >返回一個二位整數數組中最大子數組的和(小組成員:滕達,侯誠超)

返回一個二位整數數組中最大子數組的和(小組成員:滕達,侯誠超)

格式 esp clas length tool ++ mage 宋體 組成

小組成員:侯誠超,滕達

技術分享圖片

技術分享圖片

設計思想


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<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; } } }

返回一個二位整數數組中最大子數組的和(小組成員:滕達,侯誠超)