• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Ay's Blog@CNSSUESTC

            學校的數據結構試驗題目一 背包問題

            題目如下,解法可能不是最好的? 若有更好解法? 請賜教?
            初學算法~望多多指教啊~~

            c.bmp
            解法:


            ? 1
            ?
            ??2?
            ??3?#include?<iostream>
            ??4?#include?<windows.h>
            ??5?
            ??6?#define?MAXINPUT?15
            ??7?
            ??8?using?namespace?std?;
            ??9?
            ?10?struct?stack?{
            ?11?????int?*data?;
            ?12?????stack?*next?;
            ?13?}?;
            ?14?
            ?15?
            ?16?
            ?17?stack?*push(stack?*top?,?int?*data?)???//壓棧
            ?18?{
            ?19?????stack?*tem?=??new?stack?;
            ?20?????
            ?21?????tem->data?=?data?;
            ?22?
            ?23?????tem->next?=?top?;
            ?24?
            ?25?????return?tem?;
            ?26?}
            ?27?
            ?28?stack?*pop(stack?*top?,?int?**data)???//出棧
            ?29?{????
            ?30?????if(?top?==?NULL)
            ?31?????????return?top?;
            ?32?????stack?*tem?;
            ?33?
            ?34?????tem?=?top?;
            ?35?
            ?36?????*(data)?=?tem->data?;
            ?37?
            ?38?????top?=?top->next?;
            ?39?
            ?40?????delete?tem?;
            ?41?
            ?42?????return?top?;
            ?43?}
            ?44?
            ?45?void?stackprint(stack?*top)??//打印棧內容
            ?46?{
            ?47?????while(1)
            ?48?????{
            ?49?????
            ?50?????if(?top?==?NULL?)
            ?51?????????break?;
            ?52?
            ?53?????cout<<*(top->data)<<"?"?;
            ?54?????
            ?55?????top?=?top->next?;
            ?56?????
            ?57?????}
            ?58?
            ?59?????cout<<endl?;
            ?60?}
            ?61?
            ?62?
            ?63?
            ?64?int?sum?=?0?,?input[MAXINPUT]?=?{0}??;
            ?65?
            ?66?int?main(void)
            ?67?{
            ?68?????int?count?=?0?,?T?=?0?;
            ?69?
            ?70?????cout<<"請輸入T值"<<endl?;
            ?71?????cin>>T?;
            ?72?
            ?73?????cout<<"請輸入w數組數目"<<endl?;
            ?74?????cin>>count?;
            ?75?????
            ?76?????if(?count?>?MAXINPUT?)
            ?77?????{
            ?78?????????cout<<"輸入溢出"<<endl?;
            ?79?????????return?1?;
            ?80?????}
            ?81?
            ?82?????for(?int?i?=?0?;?i?<?count?;?i++?)
            ?83?????{
            ?84?????????cout<<"請輸入w["<<i<<"]值"<<endl?;
            ?85?????????cin>>input[i]?;
            ?86?????}
            ?87?
            ?88?????cout<<endl<<"Loading"<<endl?;
            ?89?????
            ?90?
            ?91?
            ?92?????stack?*top?=?NULL?;??//初始化棧
            ?93?
            ?94?????int?i?=?0??,?*temdata?=?input?,?*popdata?=?input?,?*enddata?=?&input[count]??;
            ?95?
            ?96?????/*
            ?97?????棧的非遞歸調用,
            ?98?????先壓棧數據,然后依次遍歷剩余的數據,滿足條件打印,小于預期值就壓棧
            ?99?????接著遍歷剩余數據,遍歷這個層次的數據完了就出棧,然后指針+1(指向下一個數據),繼續遍歷剩余數據
            100?????*/
            101?????
            102?????while(1)
            103?????{
            104?????????sum?+=?*temdata?;
            105?????????
            106?????????top?=?push(top?,?temdata)?;
            107?????
            108?????????if(?sum?==?T?)
            109?????????{
            110?????????????stackprint(top)?;
            111?????????????top?=?pop(top,&popdata)?;
            112?????????????sum?-=?*popdata?;
            113?????????????top?=?pop(top?,?&popdata?)?;
            114?????????????sum?-=?*popdata?;
            115?????????????temdata?=?++popdata?;????????
            116?????????
            117?????????}
            118?????????else?if?(sum?>?T?)
            119?????????{
            120?????????????top?=?pop(top,&popdata)?;
            121?????????????sum?-=?*popdata?;
            122?????????????temdata?=?++popdata?;
            123?????????}
            124?????????else?if(?sum<T?)
            125?????????{
            126?????????????temdata?=?++popdata?;
            127?????????}
            128?
            129?????????if(?(temdata-1)?==?enddata?)
            130?????????{
            131?????????????top?=?pop(top,&popdata)?;
            132?????????????sum?-=?*popdata?;????????????
            133?????????????top?=?pop(top,&popdata)?;
            134?????????????sum?-=?*popdata?;
            135?
            136?????????????temdata?=?++popdata?;
            137?????????}
            138?????
            139?????????if(?top?==?NULL?&&??popdata?==?enddata)
            140?????????????????break?;
            141?????
            142?????}
            143?
            144?
            145?
            146?????
            147?????system("pause")?;
            148?
            149?????return?1;
            150?
            151?}
            152?
            153?
            154?


            posted on 2008-12-09 14:36 __ay 閱讀(358) 評論(0)  編輯 收藏 引用 所屬分類: 算法 && C/C++

            久久99精品国产麻豆蜜芽| 嫩草影院久久国产精品| 欧美伊人久久大香线蕉综合 | 久久er热视频在这里精品| 国产精品美女久久久网AV| 久久这里只精品99re66| 成人综合伊人五月婷久久| 色偷偷91久久综合噜噜噜噜| 青草国产精品久久久久久| A级毛片无码久久精品免费| 久久久无码精品亚洲日韩蜜臀浪潮| 欧美熟妇另类久久久久久不卡| 国产女人aaa级久久久级| 人妻精品久久无码区| 久久综合视频网| 国产午夜福利精品久久| 亚洲人成网亚洲欧洲无码久久| 精品一久久香蕉国产线看播放| 精品久久久久久无码专区不卡| 欧美伊人久久大香线蕉综合| 久久97久久97精品免视看秋霞| av午夜福利一片免费看久久| 一本色道久久HEZYO无码| 伊人久久国产免费观看视频 | 1000部精品久久久久久久久| 久久精品国产亚洲AV久| 久久久99精品成人片中文字幕 | 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久精品国产AV一区二区三区| 国内精品久久久久久久久电影网| 久久久久亚洲AV成人片| 久久国产精品成人影院| 久久久久波多野结衣高潮| 伊人久久五月天| 久久精品成人欧美大片| 中文字幕热久久久久久久| 婷婷伊人久久大香线蕉AV | 精品视频久久久久| 久久久久亚洲AV成人网人人网站 | 亚洲日韩欧美一区久久久久我| 久久精品国产精品亚洲人人|