1. 程式人生 > >研發工程師程式設計題

研發工程師程式設計題

[程式設計題]刪數
有一個數組a[N]順序存放0-N,要求沒隔兩個數刪掉一個數,到末尾時迴圈至開頭繼續進行,求最後一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,7},0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除),如此迴圈直到最後一個數被刪除。

輸入描述:

每組資料為一行一個整數n(小於等於1000),為陣列成員數,如100,則對a[999]進行計算。

輸出描述:

一行輸出最後一個被刪掉的數的原始下標位置。

輸入例子:

8

輸出例子:

6

int main()
{
queue<int
>
Q; int n; int ans; cin >> n; for (int i = 0; i < n; i++) { Q.push(i); } while (!Q.empty()) { if (Q.size() == 1) ans = Q.front(); for (int i = 0; i < 2; i++) { Q.push(Q.front()); Q.pop(); } Q.pop(); } cout << ans; return 0; }

[程式設計題]字元集合
輸入一個字串,求出該字串包含的字元集合

輸入描述:

每組資料輸入一個字串,字串最大長度為100,且只包含字母,不可能為空串,區分大小寫。

輸出描述:

每組資料一行,按字串原有的字元順序,輸出字元集合,即重複出現並靠後的字母不輸出。

輸入例子:

abcqweracb

輸出例子:

abcqwer

int main()
{
    string S;
    cin >> S;

    for (int i = 1; i < S.length(); i++)
    {
        auto sIt = S.begin() + i;
        while (sIt!=S.end())
        {
            if (S[i - 1] == *sIt)
            {
                S.erase(sIt);//刪除後自動會sIt++
} else sIt++; } } cout << S <<endl; return 0; }