C++與演算法

解答 - Dangerous Dive

我們需要一個陣列 back 紀錄每個編號的志願者有沒有回來。

0 代表沒回來,1 代表有回來。

例如

  • back[5] == 1 代表 5 號志願者有回來
  • back[8] == 0 代表 8 號志願者沒回來

先規劃好以上的資料結構,剩下的工作就是完成它而已。

#include<iostream>
using namespace std;

int main()
{
    int n, R;
    int i, man;
    int back[10005];

    while( cin >> n >> R )
    {
        i = 1;
        while( i<=n )
        {
            back[i] = 0;

            i = i+1;
        }

        i = 0;
        while( i<R )
        {
            cin >> man;
            back[man] = 1;

            i = i+1;
        }

        if( n==R )
            cout << "*" << endl;
        else
        {
            i = 1;
            while( i<=n )
            {
                if( back[i] == 0 )
                    cout << i << " ";

                i = i+1;
            }
            cout << endl;
        }
    }
}