杭电 1563 Find your present!

    xiaoxiao2021-03-25  137

    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]); } } }

    转载请注明原文地址: https://ju.6miu.com/read-35690.html

    最新回复(0)