杭电 1563 Find your present!

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
题意就是给一列数找到只出现一次的数
最简单的想法就是用数组存比如a[1]存1出现次数a[2]存2出现次数a[3]存3出现次数....最后遍历找到a[i]==1输出i
但是注意如果给出数非常大就会出问题如给2^32数组要开多大,因此用a[0][0]存第一个出现的数a[1][0]存第二个不同的数a[3][0]存第四个不同的数a[i][1]存第i个不同的出现次数
#include<iostream>
#include<stdio.h>
#include<string>
#include<cstring>
#include<math.h>
using namespace std;int main()
{
int n;
while(cin>>n)
{
if(n==0)
break;
int a[1000][2]={0};
int t=0;
while(n--)
{
int m;
cin>>m;
int h=0;//标记0表示没出现过1表示出现过
for(int i=0;i<=t;i++)
{
if(a[i][0]==m) //判断前面是否出现过如果出现过,次数++并标记h=1
a[i][1]++,h=1;
}
if(h==0)
{
a[t][0]=m;
a[t][1]++;
t++;
} }
for(int i=0;i<=t;i++)
{
if(a[i][1]==1)
printf("%d\n",a[i][0]);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值