閱讀以下說明和C程序,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。 
【說明】 
現(xiàn)有n(n<1000)節(jié)火車車廂,順序編號為1,2,3,?,n,按編號連續(xù)依次從A方向的鐵軌駛?cè)?,從B方向鐵軌駛出,一旦車廂進(jìn)入車站(Station)就不能再回到A方向的鐵軌上;一旦車廂駛?cè)隑方向鐵軌就不能再回到車站,如圖7-1所示,其中Station為棧結(jié)構(gòu),初始為空且最多能停放1000節(jié)車廂。 
 
下面的C程序判斷能否從B方向駛出預(yù)先指定的車廂序列,程序中使用了棧類型STACK,關(guān)于?;静僮鞯暮瘮?shù)原型說明如下: 
void InitStack(STACK *s):初始化棧。 
void Push (STACK *s,int e):將一個整數(shù)壓棧,棧中元素數(shù)目增1。 void Pop (STACK *s):棧頂元素出棧,棧中元素數(shù)目減1。 
int Top (STACK s):返回非空棧的棧頂元素值,棧中元素數(shù)目不變。 int IsEmpty (STACK s):若是空棧則返回1,否則返回0。 
【C程序】 
#include
/*此處為棧類型及其基本操作的定義,省略*/ 
int main(){ 
STACK station; 
int state[1000]; 
int n;                                /*車廂數(shù)*/ 
int begin, i, j, maxNo;           /*maxNo為A端正待入棧的車廂編號*/ 
printf("請輸入車廂數(shù):"); 
scanf("%d",&n); 
printf(“請輸入需要判斷的車廂編號序列(以空格分隔):”); 
if(n<1)return-1;
for (i=0; i
(1)	/*初始化棧*/
maxNo=1; 
for(i=0; i<n; ){  /*檢查輸出序列中的每個車廂號state[i]是否能從棧中獲取*/
if( (2) ){    /*當(dāng)棧不為空時*/
if (state[i]=Top(station)) {    /*棧頂車廂號等于被檢查車廂號*/
printf("%d",Top(station));
Pop(&station);i++;
} 
else 
if ( (3) ) { 
printf(“error\n”); 
return 1; 
} 
else{ 
begin= (4) 
for(j=begin+l;j <=state [i];j++) {
Push(&station, j); 
} 
} 
} 
else{   /*當(dāng)棧為空時*/ 
begin=maxNo; 
for(j=begin; j<=state[i];j++) {
Push(&station, j); 
} 
maxNo= (5) 
} 
} 
printf("OK"); 
return 0; 
}
 查看答案
                                        查看答案
                                     ,且總重量不超過背包容量,即
,且總重量不超過背包容量,即 ,其中,xi∈{0,1},xi=0表示第i個物品不放入背包,xi=1表示第i個物品  放入背包。
,其中,xi∈{0,1},xi=0表示第i個物品不放入背包,xi=1表示第i個物品  放入背包。



	
