Find your present! map
Problem Description
In the new year party, everybody will get a "special present".Now it's your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present's card number will be the one that different from all the others.For example, there are 5 present, and their card numbers are 1, 2, 3, 2, 1.so your present will be the one with the card number of 3, because 3 is the number that different from all the others.
Input
The input file will consist of several cases.
Each case will be presented by an integer n (1<=n<=200, and n is odd) at first. Following that, n positive integers will be given in a line. These numbers indicate the card numbers of the presents.n = 0 ends the input.
Output
For each case, output an integer in a line, which is the card number of your present.
Sample Input
5
1 1 3 2 2
3
1 2 1
0
Sample Output
3
2
题意
找出一系列数字中出现次数只有一次的那个数
代码
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
int main()
{
int n;
while (scanf("%d", &n), n)
{
map<string, int>m;//map<char*,int >m,这样定义不行,
//因为(char*)是一个地址 而地址没有发生变化.就没有办法统计不同数值出现的次数
for (int i = 0; i < n; i++)
{
char ch[100];
string ch1;
scanf(" %s", &ch);
ch1 = ch;
m[ch1]++;
}
map<char *, int>::iterator it;
for (it = m.begin(); it != m.end(); it++)
{
if (it->second == 1)//if(*it==1)会报错,说是没有==这个操作符
//m[ch]=1 那么it->second=1; it->first=ch;
{
cout << it->first << endl;
break;
}
}
}
return 0;
}