算法:貪心算法

貪心算法:求序列中連續(xù)的最大和的組合熄云。

想法是采取逐條記錄的方法艺糜。

循環(huán)數(shù)組中的元素,存入一個數(shù)組并使其中元素相加
幾種情況:

  ①  大于0  ---  比較當(dāng)前數(shù)組中元素和與沒有加入此元素之前的和
      (1)  大于此前的和  ---  繼續(xù)向前循環(huán)(開始序號不變)
      (2)  小于此前的和  ---  在結(jié)果集中記錄當(dāng)前狀態(tài)(開始序號赶熟,結(jié)束序號和最大值),并且
  繼續(xù)向前循環(huán)(開始序號不變)
  ②  小于0  ---  在結(jié)果集中記錄當(dāng)前狀態(tài)陷嘴,并且重新向前循環(huán)(開始序號為下一個元素)

循環(huán)完畢映砖,查找出結(jié)果集中和最多的一種結(jié)果。

使用C#實(shí)現(xiàn)的效果:


image.png

接下來是用C#實(shí)現(xiàn)的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace test
{
    class Program
    {
        const int COUNT = 10;

        const int MIDDLE = 0;
        static void Main(string[] args)
        {
            //  將數(shù)組賦值(-100 -- 100)
            int[] iArray = new int[COUNT];
            Random random = new Random(DateTime.Now.Millisecond);
            for (var i = 0; i < COUNT;i++ )
            {
                iArray[i] = random.Next(-COUNT, COUNT);
            }

            //  下面是算法
            List<Caculation> cache = new List<Caculation>();
            var data = new Caculation();
            int add = 0;

            for (int i = 0; i < COUNT ; i++)
            {
                add += iArray[i];

                if (add > 0)
                {
                    if (add >= data.max)
                    {
                        data.end = i;
                        data.max = add;
                        if (i == COUNT - 1)
                        {
                            cache.Add(data);
                        }
                    }
                    else
                    {
                        cache.Add(data);    //  提交上一個
                        var temp = new Caculation(data);
                        temp.end = i;       //  下一個不歸零
                        temp.max = add;
                        data = temp;
                    }
                }
                else
                {
                    data.max = add;
                    data.end = i;
                    cache.Add(data);        //  提交這一個
                    add = 0;                //  下一個歸零
                    var temp = new Caculation();
                    temp.start = i + 1;
                    data = new Caculation(temp);
                }
            }
            

            int max = 0;
            Caculation c = null;
            for (var i = 0; i < cache.Count; i++)
            {
                Console.WriteLine(cache[i].ToString());
                if (cache[i].max > max)
                {
                    c = cache[i];
                    max = c.max;
                }
            }



            //顯示結(jié)果
            int s = 0;
            foreach (var i in iArray)
            {
                Console.Write(i+" , ");
                s += i;
            }
            Console.WriteLine("\nThe Max is" + c);

            Console.ReadLine();
        }
        class Caculation
        {
            public int max;
            public int start, end;
            public Caculation()
            {
                this.max = 0;
                this.start = 0;
                this.end = 0;
            }
            public Caculation(Caculation c)
            {
                this.max = c.max;
                this.start = c.start;
                this.end = c.end;
            }
            public override string ToString()
            {
                return "This Caculation is Max: " + max + " Start: " + start + " end: " + end;
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灾挨,一起剝皮案震驚了整個濱河市邑退,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劳澄,老刑警劉巖地技,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秒拔,居然都是意外死亡莫矗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趣苏,“玉大人狡相,你說我怎么就攤上這事∈晨模” “怎么了尽棕?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彬伦。 經(jīng)常有香客問我滔悉,道長,這世上最難降的妖魔是什么单绑? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任回官,我火速辦了婚禮,結(jié)果婚禮上搂橙,老公的妹妹穿的比我還像新娘歉提。我一直安慰自己,他們只是感情好区转,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布苔巨。 她就那樣靜靜地躺著,像睡著了一般废离。 火紅的嫁衣襯著肌膚如雪侄泽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天蜻韭,我揣著相機(jī)與錄音悼尾,去河邊找鬼。 笑死肖方,一個胖子當(dāng)著我的面吹牛闺魏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俯画,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼舷胜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了活翩?” 一聲冷哼從身側(cè)響起烹骨,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎材泄,沒想到半個月后沮焕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拉宗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年峦树,在試婚紗的時候發(fā)現(xiàn)自己被綠了册踩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犹赖。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡青灼,死狀恐怖帽借,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谷遂,我是刑警寧澤葬馋,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站肾扰,受9級特大地震影響畴嘶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜集晚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一窗悯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偷拔,春花似錦蒋院、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钉蒲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彻坛,已是汗流浹背顷啼。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昌屉,地道東北人钙蒙。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像间驮,于是被迫代替她去往敵國和親躬厌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容