RE: [請益] 外商面試時的一道程式考題

1.(考基本程式設計和邏輯)
假設有N個人排隊來領號碼牌,領的號碼牌是1-N號,接下來要從N個人挑7個人入選
                                                                             
(也就是說排隊的人只是先取得資格,中選的人是另由程式挑選)
                                                                             
排序規則如下,請依題目撰寫程式(使用程式語言不限)。
                                                                             
                                                                             
從N個號碼挑選一個起始號碼,以及一個間隔號碼,共取7個人,超過N則從頭開始算起
                                                                             
已被取出的號碼就不會在數列中(註:非隨機取亂數)

假設N=10,起始號碼=3,間隔碼號=3,挑選人數=7
                                                                             
那麼取出的號碼順序如下:
                                                                             
3、6、9、2、7、1、8

==================程式碼===============
// N=10
int [ ] Picked = new int [10];
int [ ] PickList = new int[7];
int PickedIndex = 0;
// 間隔碼號=3
int Picki = 3;
// 起始號碼用Random
Random r;
int Starti = r *10;
// 挑選人數 等於7人
while(PickedIndex != 7-1)
{
    if(Picki == 3)
    {  
          if(Picked[Starti-1] != 0)
          {
              PickList[PickedIndex] = Starti;
              Picked[Starti-1] = 1;
              PickedIndex++;
              Picki = 0;
          }
          else
          {
              while(Picked[Starti-1] ==0)
              {
                   Starti++;
                   if(Starti == 10)
                   {
                       Starti = 1;  
                   }
              }
              PickList[PickedIndex] = Starti;
              Picked[Starti-1] = 1;
              PickedIndex++;
              Picki = 0;  
          }
    }
    else
    {
          Picki++;
          Starti++;
          if(Starti == 10)
          {
              Starti = 1;
          }    
    }
}



留言