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

騰訊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   管理


<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

公告

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>
            国产日韩一区二区| 亚洲精品一区二区三区樱花| 国产日韩精品一区观看| 中文在线资源观看网站视频免费不卡| 久久久精品国产99久久精品芒果| 一本在线高清不卡dvd| 欧美激情亚洲| 亚洲精品偷拍| 亚洲国产婷婷香蕉久久久久久99| 久久国产精品久久久久久久久久| 欧美亚男人的天堂| 亚洲五月婷婷| 亚洲一区二区三区视频| 国产精品sm| 欧美一区二区三区久久精品 | 亚洲素人一区二区| 欧美午夜片欧美片在线观看| 正在播放日韩| 亚洲一区二区三区免费观看| 国产伦精品一区二区三区| 国产精品久久一区二区三区| 欧美日韩中文字幕日韩欧美| 亚洲午夜一级| 亚洲欧美日韩国产成人| 国模一区二区三区| 欧美激情第二页| 欧美激情一区二区三区在线视频观看 | 欧美精品一区二区三区视频 | 亚洲一区二区三区精品在线| 国产九区一区在线| 久久久久久久网站| 免费观看在线综合| 一本色道88久久加勒比精品| 一区二区三区高清| 国产一区二区高清| 欧美国产日韩二区| 欧美视频日韩视频在线观看| 欧美一区二区免费观在线| 久久久www成人免费无遮挡大片| 亚洲国产精品一区制服丝袜| 亚洲精品极品| 国产人成一区二区三区影院| 欧美高清一区| 国产精品嫩草影院一区二区| 老司机精品视频网站| 欧美日韩四区| 免费成人av| 欧美午夜精品一区| 免播放器亚洲| 国产精品亚洲аv天堂网| 欧美α欧美αv大片| 国产精品欧美风情| 亚洲国产日韩欧美在线动漫| 国产日韩欧美在线播放| 亚洲国产影院| 韩国在线一区| 亚洲无线视频| 一本一本a久久| 久久精品成人一区二区三区蜜臀 | 亚洲视频一二区| 久久久亚洲国产美女国产盗摄| 一区二区三区四区五区在线| 久久久久久高潮国产精品视| 亚洲一区二区综合| 欧美多人爱爱视频网站| 久久久久久免费| 国产精品成人一区二区三区吃奶 | 久久精品欧美日韩| 亚洲欧美久久久| 欧美aa国产视频| 久久午夜av| 国产无一区二区| 国产婷婷色综合av蜜臀av| 欧美影院视频| 国产精品成人久久久久| 亚洲精品视频二区| 亚洲第一狼人社区| 久久se精品一区精品二区| 午夜精品久久久久影视 | 国产精品白丝av嫩草影院| 亚洲福利视频免费观看| 在线观看一区视频| 久久久国产亚洲精品| 欧美在线|欧美| 国产精品入口夜色视频大尺度| 91久久香蕉国产日韩欧美9色| 1024亚洲| 噜噜噜躁狠狠躁狠狠精品视频 | 久久久99爱| 国产欧美一区二区精品性色| 亚洲自拍偷拍网址| 欧美一区日本一区韩国一区| 国产精品久线观看视频| 亚洲视频999| 欧美与欧洲交xxxx免费观看| 国产欧美一区二区三区久久人妖| 亚洲欧美日韩高清| 久色成人在线| 亚洲精品1区2区| 欧美日韩国产片| 正在播放亚洲| 久久精品视频在线观看| 国内精品久久久久久久影视麻豆 | 国产精品久久久一区二区| 国产精品99久久99久久久二8| 新67194成人永久网站| 国产欧美日韩综合一区在线播放 | 午夜激情一区| 另类图片国产| 日韩亚洲精品在线| 国产精品乱人伦中文| 欧美专区18| 亚洲欧洲精品成人久久奇米网| 一区二区三区久久网| 国产精品一区二区黑丝| 久久久久久久久久久久久9999| 亚洲国产精品第一区二区| 中文精品视频| 国产综合18久久久久久| 欧美激情综合五月色丁香| 亚洲欧美日韩一区| 欧美国产日韩xxxxx| 亚洲伊人久久综合| 激情亚洲网站| 国产精品99一区| 久久精品国产成人| 亚洲精品自在久久| 久久最新视频| 亚洲一区二区高清| 欧美成人一区二区三区| 欧美亚洲日本一区| 亚洲风情亚aⅴ在线发布| 欧美大片免费看| 亚洲无人区一区| 亚洲福利免费| 久久精品亚洲精品| 99国产精品视频免费观看一公开| 国产麻豆日韩| 欧美久久视频| 久久久久久免费| 国产精品99久久久久久人| 欧美成人免费在线观看| 欧美一区二区三区在线视频 | 亚洲精品一区在线观看| 国产欧亚日韩视频| 欧美日韩免费观看一区=区三区| 久久精品视频在线免费观看| 日韩视频免费观看高清在线视频| 久久亚洲春色中文字幕久久久| 亚洲永久在线观看| 日韩一区二区免费看| 在线观看视频免费一区二区三区| 国产精品久久久一区二区| 欧美激情在线播放| 麻豆精品一区二区综合av| 午夜老司机精品| 在线亚洲伦理| 日韩网站在线看片你懂的| 欧美国产专区| 农村妇女精品| 久久综合伊人| 美女网站久久| 欧美bbbxxxxx| 美日韩丰满少妇在线观看| 久久精品国产免费| 欧美在线一区二区| 久久精品人人做人人爽| 欧美伊人影院| 久久精品二区| 久久精品久久99精品久久| 久久成人人人人精品欧| 欧美亚洲在线视频| 欧美在线网站| 久久人人爽爽爽人久久久| 久久精品一区二区三区不卡| 欧美在线看片| 久久成人国产| 久久综合色8888| 欧美激情中文字幕在线| 亚洲激情偷拍| 日韩视频免费| 亚洲图片在线| 欧美有码视频| 麻豆乱码国产一区二区三区| 欧美成熟视频| 欧美日韩福利在线观看| 欧美日韩直播| 国产日韩欧美在线看| 韩国成人精品a∨在线观看| 在线看国产一区| 亚洲美女黄色| 亚洲欧美在线另类| 久久精品国产999大香线蕉| 免费成人激情视频| 91久久亚洲| 香蕉av福利精品导航| 老鸭窝毛片一区二区三区 | 夜夜夜精品看看| 先锋影音久久久| 免费一级欧美在线大片|