青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

騰訊2009年重慶筆試附加題

題目描述:有一個背包,能盛放的物品總重量為S,設有N件物品,其重量分別為w1,w2,...,wn.希望從N件物品中選擇若干件物品,所選物品的重量之和恰能放入該背包,即所選物品的重量之和等于S。
    要求:用非遞歸的方法。
  
    便于理解,先說說遞歸算法。
    非常簡單: 
 
 int process(int s,int n) 
    

    
if(s==0)return 1
    
if(s<0||(s>0&&n<1))return 0
    
if(process(s-w[n],n-1))   
   

        cout
<<w[n]; 
        
return 1
    }
 
    
return process(s,n-1);     
   }
 


方法1:模擬堆棧

也很簡單,先定義一個struct Node
typedef struct
    
int s; 
    
int n; 
    
int job;  //1表示要,2表示不要 
    }
Node; 


然后將遞歸的方法用數組模擬出來,其實就是用數組實現進棧出棧。
int Process(int s,int n) 

    STACK stack[
100],x; 
    
int top,k,rep;   
    x.s
=s; 
    x.n
=n; 
    x.job
=0
    top
=1
    stack[top]
=x; 
    k
=0
    
while(k==0&&top>0)
        x
=stack[top]; 
        rep
=1
        
while(!k&&rep)
            
if(x.s==0)k=1
            
else if(x.s<0||x.n<=0)rep=0
            
else 
                x.s
=x.s-w[x.n--];      //選取這個物品 
                x.job=1
                stack[
++top]=x;        //進棧 
                }
 
            }
 
            
if(!k){                     //總重量超出,需要丟棄其中的某個物品 
                rep=1
                
while(top>=1&&rep)
                    x
=stack[top--]; 
                    
if(x.job==1)
                        x.s
+=w[x.n+1];  //丟棄物品 
                        x.job=2
                        stack[
++top]=x;   //出棧 
                        rep=0
                        }
 
                    }
 
                }
 
        }
 
        
if(k)
            
while(top>=1)
                x
=stack[top--]; 
                
if(x.job==1)cout<<w[x.n+1]; 
                }
 
            }
 
            
return k; 
    }
 

這個程序算法不復雜,但是由于平時這種方法用得少,尤其是stack[top--] stack[++top]這種形式的東東容易搞錯,所以考試的時候我只寫了算法描述。
    
方法二: 注意到題目并沒有限制算法的時間空間,我們用最暴力來解決:窮舉法

#include <iostream> 
using namespace std; 
void main() 

int i,j; 
int n,s;//n為物品件數,s為背包容量 
cin>>n; 
//n = 10; 
int *= new int[n+1];//存儲物品大小 
int *= new int[n+1];//物品是否被選中 
for(i=1;i<=n;i++

  cin
>>w[i];//輸入物品大小 
  y[i]=0
}
 
cin
>>s; 
//s = 21; 
int t=0
int flag=0
while(1

  
for(i=1;i<=n;i++)//把物品選中的整個串當作一個二進數,進行范圍的全搜索 
  
   
if(y[i]==0
   

    y[i]
=1
    
//cout<<"step in y[i]=0"; 
    break
   }
 
   
else 
   

    
if (i==n) 
    

     flag 
= 1
    }
 
    y[i]
=0
    
continue
   }
 
  }
 
  t 
= 0
  
for(j=1;j<=n;j++
  

   t 
= t+w[j]*y[j]; 
  }
 
  
if(t == s)//判斷是否求得解,求到解就直接退出 
  
   
for(i=1;i<=n;i++
   

    
if(y[i]==1) cout<<w[i]<<"  "
   }
 
   
break
  }
 
  
if(flag == 1//無解處理 
  
   cout
<<"no answer"<<endl; 
   
break
  }
 
}
 
}

posted on 2008-10-23 19:28 流牛ζ木馬 閱讀(2163) 評論(3)  編輯 收藏 引用

評論

# re: 騰訊2009年重慶筆試附加題 2008-12-05 13:58 goldallen

非常不錯的 :)  回復  更多評論   

# re: 騰訊2009年重慶筆試附加題 2008-12-05 18:43 goldallen

用數組實現遞歸 感覺有些難度...
  回復  更多評論   

# re: 騰訊2009年重慶筆試附加題[未登錄] 2009-06-01 00:13 lyx

第一個遞歸算法必須要保證剛剛好能裝滿背包,否則就會死循環了。  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

導航

統計

公告

MY Email/MSN :mars1021@163.com QQ : 27402040 流牛ζ木馬

常用鏈接

留言簿(6)

隨筆檔案

相冊

搜索

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品一区免费观看| av成人国产| 蜜桃伊人久久| 久久综合综合久久综合| 美日韩精品免费观看视频| 久久综合久久美利坚合众国| 免费一级欧美片在线观看| 欧美aa国产视频| 欧美三区在线视频| 国产一区二区三区四区老人| 亚洲电影免费观看高清完整版在线 | 久久精视频免费在线久久完整在线看| 亚洲欧美日韩在线一区| 久久精品在线免费观看| 欧美激情国产精品| 日韩午夜电影av| 性色av一区二区三区| 免费国产一区二区| 国产精品午夜在线观看| 亚洲午夜视频在线观看| 欧美二区在线播放| 欧美日韩在线播放三区| 国产视频一区二区在线观看| 亚洲国产欧美一区二区三区同亚洲 | 亚洲精品一区二区三区婷婷月| 99热免费精品| 狼人社综合社区| 国产精品福利影院| 亚洲国产精品www| 欧美亚洲一区二区三区| 亚洲黄色在线视频| 羞羞色国产精品| 欧美日韩亚洲网| 亚洲人成绝费网站色www| 欧美在线视频免费播放| 日韩亚洲精品视频| 欧美成人精品| 亚洲第一页在线| 久久精品中文字幕一区| 中文久久乱码一区二区| 欧美国产日本| 最新亚洲激情| 美女尤物久久精品| 欧美一区国产一区| 国产精品资源在线观看| 洋洋av久久久久久久一区| 欧美成人资源网| 久久精品国产免费观看| 国产日韩欧美一区在线| 欧美一区二区三区日韩视频| 中文亚洲欧美| 国产精品捆绑调教| 亚洲综合国产| 亚洲视频你懂的| 国产精品二区三区四区| 亚洲免费在线视频一区 二区| 日韩午夜精品视频| 欧美日韩一区二区视频在线| 99ri日韩精品视频| 亚洲精品久久| 欧美日韩精品一区| 亚洲少妇中出一区| 亚洲网站在线看| 国产女同一区二区| 久久精品72免费观看| 久久都是精品| 亚洲国产高清aⅴ视频| 亚洲福利视频免费观看| 欧美精品自拍偷拍动漫精品| 一区二区三区高清| 亚洲一区观看| 国产在线观看一区| 欧美~级网站不卡| 欧美丰满少妇xxxbbb| 亚洲欧美国产不卡| 在线一区亚洲| 国产精品国产三级欧美二区| 亚洲欧美在线一区二区| 性欧美精品高清| 亚洲黄色av| 亚洲狼人精品一区二区三区| 欧美精品在线一区二区| 欧美一区二区在线播放| 欧美一区二区播放| 亚洲黄色有码视频| 亚洲视频视频在线| 一区二区在线视频播放| 亚洲欧洲另类| 国产欧美在线观看| 亚洲国产高清视频| 国产精品自拍一区| 亚洲高清资源| 国产视频在线观看一区二区三区| 裸体素人女欧美日韩| 欧美日韩国产成人在线观看 | 免费成人性网站| 欧美激情视频给我| 欧美中文字幕| 欧美激情一区二区三区不卡| 亚洲欧美偷拍卡通变态| 久久久免费观看视频| 亚洲视频一区在线观看| 久久久免费精品视频| 亚洲桃色在线一区| 老色鬼精品视频在线观看播放| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美电影电视剧在线观看| 欧美日韩在线直播| 欧美激情久久久久| 国产一区高清视频| 亚洲在线不卡| 一区二区三区鲁丝不卡| 久久日韩精品| 久久久久88色偷偷免费| 欧美午夜电影网| 亚洲欧洲一区二区三区| 在线观看日韩| 久久久久久久97| 久久久久久久精| 国产精品一区久久久| 在线视频欧美精品| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美在线视频网站| 亚洲曰本av电影| 欧美精品播放| 亚洲国产精品va| 亚洲国产精品va在看黑人| 欧美一区在线视频| 久久精品日韩| 国产一区日韩欧美| 久久精品二区亚洲w码| 久久国产精品久久久久久| 国产精品美女www爽爽爽| 国产精品v欧美精品∨日韩| 一区二区免费在线视频| 久久一二三四| 欧美大片在线看免费观看| 在线看日韩av| 免费成人高清| 亚洲黄色在线观看| 99在线观看免费视频精品观看| 欧美高清视频| 亚洲精品在线三区| 亚洲影院高清在线| 国产麻豆午夜三级精品| 欧美亚洲一区三区| 嫩草伊人久久精品少妇av杨幂| 1204国产成人精品视频| 欧美www在线| 一本久久综合亚洲鲁鲁| 性欧美精品高清| 国语自产精品视频在线看一大j8 | 亚洲人成网在线播放| 欧美成在线视频| 日韩午夜三级在线| 欧美在线91| 亚洲高清不卡| 欧美日韩一区二区三区在线看| 亚洲天堂免费观看| 久久三级视频| 99re这里只有精品6| 国产精品亚洲综合天堂夜夜| 久久精品视频在线看| 91久久久久久久久久久久久| 亚洲性视频h| 精品av久久707| 欧美日韩国产在线看| 欧美一区二区| 亚洲娇小video精品| 欧美一区二区三区久久精品茉莉花| 国内外成人免费激情在线视频| 欧美岛国在线观看| 午夜在线一区| 99国产精品私拍| 麻豆成人小视频| 亚洲欧美日本日韩| 亚洲国产精品传媒在线观看| 欧美午夜视频网站| 美日韩精品免费| 欧美诱惑福利视频| 99视频一区二区| 你懂的视频一区二区| 性久久久久久久| 一本色道婷婷久久欧美| 在线观看一区| 国产午夜一区二区三区| 欧美日韩视频在线一区二区观看视频 | 欧美1区3d| 欧美制服丝袜| 一区二区三区视频在线看| 怡红院精品视频在线观看极品| 国产精品99一区二区| 欧美黑人多人双交| 久久久夜精品| 久久国产福利国产秒拍| 亚洲图片在区色| 亚洲午夜在线观看| 亚洲区国产区| 免费观看在线综合色| 欧美伊人久久久久久午夜久久久久|