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

            久久久精品国产| 久久综合九色欧美综合狠狠| 伊人色综合久久| 国产精品一区二区久久不卡| 欧美亚洲国产精品久久| 久久久精品波多野结衣| 香蕉久久一区二区不卡无毒影院| 99精品久久精品| 青青热久久综合网伊人| 国产精品99久久久久久www| 91久久九九无码成人网站 | 色欲综合久久中文字幕网| 久久99久国产麻精品66| 亚洲国产精品无码久久久不卡| 狠狠色丁香久久婷婷综合_中| 久久国产欧美日韩精品免费| 97视频久久久| 精品无码久久久久国产| 亚洲国产精品久久久久久| 久久国产精品免费一区| 久久受www免费人成_看片中文| 久久人人爽人人爽人人片AV东京热 | 久久国产精品久久精品国产| 久久久久亚洲精品无码蜜桃| 国产精品久久永久免费| 久久国产精品偷99| 亚洲色欲久久久综合网 | 中文字幕乱码久久午夜| 国产亚洲美女精品久久久久狼| 免费精品99久久国产综合精品| 久久青青草原亚洲av无码| 一本色道久久综合亚洲精品| 久久成人影院精品777| 日韩精品无码久久一区二区三| 久久香蕉国产线看观看精品yw| 91精品日韩人妻无码久久不卡 | 欧美激情精品久久久久| 偷偷做久久久久网站| 婷婷综合久久狠狠色99h| 久久国产精品无| 久久一区二区三区99|