1. 程式人生 > >HDU 1029 Ignatius and the Princess IV

HDU 1029 Ignatius and the Princess IV

each ica mina too bits eas inner urn cas

Ignatius and the Princess IV

  "OK, you are not too bad, em... But you can never pass the next test." feng5166 says.

  "I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which integer is the special one after I tell you all the integers." feng5166 says.

  "But what is the characteristic of the special integer?" Ignatius asks.

  "The integer will appear at least (N+1)/2 times. If you can‘t find the right integer, I will kill the Princess, and you will be my dinner, too. Hahahaha....." feng5166 says.

  Can you find the special integer for Ignatius?

Input

  The input contains several test cases. Each test case contains two lines. The first line consists of an odd integer N(1<=N<=999999) which indicate the number of the integers feng5166 will tell our hero. The second line contains the N integers. The input is terminated by the end of file.
Output

  For each test case, you have to output only one line which contains the special number you have found.
Sample Input

5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1

Sample Output

3
5
1

解題思路:
  本題給出多組數據每組數據給出一個數n,下一行給出n個數,要求找出出現次數超過一半的數字。

試想一個數的數量超過總數的一半其出現次數一定是所有的數中出現最多的那個數,我們就可以在輸入時用一個ans記錄當前出現次數最多的數,cnt記錄ans比其他數的出現次數多多少。每當cnt等於0時便說明在當前輸入已經輸入完的數中ans所代表的數出現的次數不足一半,則cnt重新記錄一個數,輸入結束後獲得的ans即為所取數。

  AC代碼

  

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(scanf("%d", &n) != EOF){
        int ans, cnt = 0, temp;
        //ans記錄當前出現次數最多的數,cnt記錄ans比其他數的出現次數多多少
        //temp記錄當前輸入的數
        for(int i = 0; i < n; i++){
            scanf("%d", &temp);
            if(cnt == 0){//cnt等於0重新記錄一個數
                ans = temp;
                cnt++;
            }else if(ans == temp){
                cnt++;  //輸入的數等於ans cnt++
            }else{
                cnt--;
            }
        }
        printf("%d\n", ans);    //輸出答案
    }
    return 0;
}

  

HDU 1029 Ignatius and the Princess IV