• <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++

            欧美久久综合性欧美| 精品久久久久久久久免费影院| 久久av无码专区亚洲av桃花岛| 亚洲成av人片不卡无码久久| 午夜精品久久久久成人| AV色综合久久天堂AV色综合在| 精品午夜久久福利大片| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久无码精品亚洲日韩按摩| 国产精品美女久久久久网| 久久影视综合亚洲| 久久99热只有频精品8| 性高朝久久久久久久久久| 成人久久综合网| 久久精品一区二区三区AV| 久久久久综合网久久| 国产色综合久久无码有码| 久久久久黑人强伦姧人妻| 国产精品99久久久精品无码| 国内精品久久久久久不卡影院| 精品久久久无码人妻中文字幕| 国产L精品国产亚洲区久久| 久久精品国产日本波多野结衣| 91性高湖久久久久| 国产美女久久精品香蕉69| 人人妻久久人人澡人人爽人人精品| 青青青伊人色综合久久| 2021少妇久久久久久久久久| 国产成人精品三上悠亚久久| 久久亚洲色一区二区三区| 久久精品视频91| 国内精品伊人久久久久网站| 99久久www免费人成精品| 久久99国产综合精品| 久久精品国产亚洲77777| 无码国内精品久久人妻| 国产色综合久久无码有码| 亚洲午夜久久久影院| 无码超乳爆乳中文字幕久久| 久久免费的精品国产V∧| 无码人妻久久一区二区三区免费丨|