zoukankan      html  css  js  c++  java
  • 求环形数组的最大子数组和

    设计思想:

                  新建一个两倍长的数组,并将两个输入的已知数组连接起来赋值给它

        进行n次遍历将数组拆成n个一维数组,则这n个数组为原环形数组遍历的n个子数组情况

        再分别对其求最大子数组和

     日志:

    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 求循环数组最大子数组和
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                
                string[] strN = textBox1.Text.Split(',');
                int[] list = new int[strN.Length];
                for (int i = 0; i < strN.Length; i++)
                {
                    list[i] = int.Parse(strN[i]);
                }
                dataGridView1.RowCount = list.Length;
                int[] temp = new int[2*list.Length];
                int[] zilist=new int [list.Length];
                for(int i = 0; i < list.Length;i++)
                {
                    temp [i]=list[i];
                    temp [i+list.Length]=list[i];
                }
                for (int i = 0; i < list.Length;i++ )
                {
                    string ziList="";;
                    string minlist = ""; 
                    int maxsum = list[0];
                    for (int j = 0; j < list.Length; j++)
                    {
                        zilist[j] = temp[i + j];
                        ziList  += (Convert.ToString(zilist[j]) + ",");
                    }
                    dataGridView1.Rows[i].Cells[0].Value = ziList;
                    maxsum = MaxListSum(zilist);
                    int n = Convert.ToInt32(label1.Text);
                    int m = Convert.ToInt32(label2.Text);
                    for (int j = n; j < m + 1; j++)
                    {
                        minlist += (Convert.ToString(zilist[j]) + ",");
                    }
                    dataGridView1.Rows[i].Cells[1].Value = minlist;
                    dataGridView1.Rows[i].Cells[2].Value=Convert.ToString(maxsum);
                    
                }
                
    
            }
    
            public int MaxListSum(int[] a)//获取最大子数组和
            {
                int m = 0;
                int n = 0;
                if (null == a)
                {
                    return 0;
                }
                if (a.Length == 1)
                {
                    return a[0];
                }
                int sum = a[0];
                int temp = a[0];
                for (int i = 1; i < a.Length; i++)
                {
                    if (a[i] < (temp + a[i]))
                    {
                        
                        temp = temp + a[i];
                    }
                    else
                    {
                        temp  = a[i];  
                    }
                    if (sum < temp)
                    {
                        n =  m;
                        m = i;
                        label1.Text=(Convert.ToString(n));
                        label2.Text = (Convert.ToString(m));
                        sum = temp;
                    }
                }
                return sum;
            }
    
            private void label2_Click(object sender, EventArgs e)
            {
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            private void label3_Click(object sender, EventArgs e)
            {
    
            }
    
            
            
        }
    }

    结果截图:

  • 相关阅读:
    调试cuda程序一定要细心啊 不然一个bug会折腾你2天
    XML和实体类之间相互转换(序列化和反序列化)
    C#实现实体类和XML相互转换
    C#压缩打包文件例子
    通过锁字符串达到控制并发的效果C#
    巧用Ajax的beforeSend 提高用户体验
    HTML代码在线运行工具
    .NET使用ZXing.NET生成中间带图片和不带图片的二维码
    获取电脑硬件信息 (硬盘,cpu,内存等)
    C# http请求带请求头部分
  • 原文地址:https://www.cnblogs.com/1113482502lq/p/9904865.html
Copyright © 2011-2022 走看看