1.我第一眼看到想到的方法:由第一個小便斗開始,走奇數號,之後往下+2,直到+2後會超過長度為止,接下來改成走偶數號,走到底若都全滿輸出"Not enough"
*結果這樣馬上出現一個顯著的BUG,就是假如1跟2都有人,則1跳3的時候就會馬上成立,而不會考慮2是否有人。
2.經過修改之後改成由第一個開始,然後除了頭尾以外,每個位置都判斷前後是否有人,若有人則持續判斷直到尾端為止,接下來第二輪才開放有位置就成立,這樣就沒問題了
if(temp==0 && (aa[temp][0]==0 && aa[temp+1][0]==0)){ //第一個位置只需要判斷後面一個是否有人
aa[temp][0]=b;
aa[temp][1]=c;
break;
}else if(temp==a-1&& (aa[temp][0]==0 &&aa[temp-1][0]==0)){ //最後一個位置只需判斷前一個是否有人
aa[temp][0]=b;
aa[temp][1]=c;
break;
}else if(aa[temp][0]==0 && (aa[temp-1][0]==0 && aa[temp+1][0]==0)){ //中間必須兩方都判斷
aa[temp][0]=b;
aa[temp][1]=c;
break;
}else if(aa[temp][0]==0 && sum==1){ //如果控制閘(sum)打開時,代表已經執行過一輪了,這時候有空位就可以進
aa[temp][0]=b;
aa[temp][1]=c;
break;
}else if(temp+1>a-1 && sum==1){ //控制閘打開並執行到底,代表全滿
cout<<" Not enough\n";
break;
}else if(temp+1>a-1){ //執行一輪後打開控制閘
temp=0;sum=1;continue;
}
temp++;