• <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 閱讀(346) 評論(0)  編輯 收藏 引用 所屬分類: 算法 && C/C++

            久久福利青草精品资源站免费| 久久99国产精品久久99| 色综合久久无码五十路人妻| 久久精品成人国产午夜| 久久嫩草影院免费看夜色| 亚洲精品tv久久久久| 99久久99这里只有免费的精品| 看全色黄大色大片免费久久久 | 97久久精品午夜一区二区| 一级做a爰片久久毛片16| 一个色综合久久| 亚洲国产天堂久久综合网站| 中文字幕亚洲综合久久菠萝蜜| 成人妇女免费播放久久久| 亚洲精品99久久久久中文字幕| …久久精品99久久香蕉国产| 亚洲精品成人网久久久久久| 色综合久久综合网观看| 日产精品99久久久久久| 亚洲国产一成久久精品国产成人综合 | 伊人久久免费视频| 亚洲av成人无码久久精品 | 99久久国产精品免费一区二区| 国产精品成人99久久久久91gav| 亚洲精品乱码久久久久久蜜桃图片| 久久国产一片免费观看| 久久99免费视频| 久久久一本精品99久久精品66| 久久免费大片| 久久精品亚洲乱码伦伦中文| 久久成人国产精品| 欧美午夜A∨大片久久| 精品乱码久久久久久久| 久久综合九色综合网站| 久久婷婷人人澡人人| 国产精品欧美久久久天天影视| 久久久久亚洲AV无码观看| 人人狠狠综合久久亚洲高清| 久久青青草原精品国产不卡| 国产日韩欧美久久| 国产亚州精品女人久久久久久 |