2014华为编程比赛-筷子问题
时间:2014-07-22 23:12:15
收藏:0
阅读:325
//华为编程:筷子,找到第一个单对的筷子
#include
<stdio.h>
#define max 37
int main()
{
int
n,i,j;
int
a[max];
int
flag=0;
int
error=-1;
scanf("%d",&n);
if(n>max)
{
printf("%d\n",error);
return error;
}
for(i=0;i<n;i++)
scanf("%d",&a[i]);
//输入数据异常处理
//剩余偶数根筷子,且匹配,无法找到漏掉的筷子
//剩余偶数根筷子,且存在单对的筷子,可以找到漏掉的筷子
if(n%2==0)
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
a[i]=flag;
a[j]=flag;
break;
}
}
}
for(i=0;i<n;i++)
{
if(a[i]!=flag)
{
printf("%d\n",a[i]);
return
0;
}
}
printf("%d\n",error);
}
//剩余奇数根筷子,必能找到漏掉的筷子
else
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
a[i]=flag;
a[j]=flag;
break;
}
}
}
for(i=0;i<n;i++)
{
if(a[i]!=flag)
printf("%d\n",a[i]);
}
}
return
0;
}
/*测试用例: 输入: 7 1 2 3 2 1 3 2 输出:2 输入: 6 1 2 3 3 2 1 输出:-1 输入: 9 12 11 8 3 3 8 11 12 13 输出:13 输入:39 输出:-1 */ |
评论(0)