2014华为编程比赛-筷子问题


//华为编程:筷子,找到第一个单对的筷子
#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    */

2014华为编程比赛-筷子问题,码迷,mamicode.com

时间: 2024-08-01 19:36:38

2014华为编程比赛-筷子问题的相关文章

2014第六届华为编程大赛初赛第一轮

/*********************************************************************** 1.投票问题 输入若干候选人,以及投票,格式如下,输出(按输入候选人输入顺序)候选人以及得票,以及 无效票数. Input: addCandidate xx1 addCandidate xx2 addCandidate xx3 addCandidate xx4 addCandidate xx5 addCandidate xx6 vote xx2 vot

2014第六届华为编程大赛初赛第四轮

/*********************************************************************** 第一题 求n个整数的最大公约数 输入 第一行: n个整数 第二行:各个整数 以空格隔开 输出:公约数 例子: input: 4 10 15 20 25 output: 5 **********************************************************************/ #include <stdio.h>

专访北京航空航天大学黎健成:我和编程比赛

前言: 在对黎健成采访的过程中,他始终强调自己是一名普通的学生,不能和曹鹏博士那样的刷题大牛相比,他接受采访是为了和更多的同学交流探讨.笔者认为,一个在各类活动中能够取得优异成绩的学生,一定在课余时间付出大量时间进行练习和复习,大量刷题和阅读技术书籍."天道酬勤",虽然天资重要,但是更离不开勤奋与努力.黎健成认为自己取得成绩,更多是通过努力付出得到的. 黎健成,北京航空航天大学软件工程专业的大四学生.除了正常上课学习外,积极参加课外竞赛活动,在竞赛活动中不断学习成长.曾获得ACM-IC

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

四川大学线下编程比赛第三题:书本转移

好久没写过日志,也怪最近事情真的特别多,最近参加关于编程方面就是CSDN高校俱乐部举办的线下编程塞,说起这次编程赛,总共三道题,题目都可以在csdn高校俱乐部上看到,参加比赛的时候有点小紧张,第三题涉及到队列,当时的机器没有代码提示,坑...也怨自己平时写代码用惯了代码提示,很多stl的方法都是隐隐约约知道,但是具体的不知道,导致第三题没有做出来,遗憾哈!下面贴一下今天写的第三题的代码 题目 四川大学线下编程比赛第三题:书本转移 题目详情: 小强有 3 个箱子 A,B,C 用来装书,所有的书(一

【华为编程大赛】洞穴逃生

洞穴逃生 描述: 精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞.在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴.精灵王子的跑步速度为17m/s,以这样的速度可能是无法逃出洞穴的.庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.精灵王子的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复. 现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T.

2014华为实习上级笔试题——三天打鱼两天晒网

#include<iostream> using namespace std; int func(int year)//判断闰年的个数 { int count=0; for(int i=1990;i<year;i++) if(year%4==0&&year%100!=0||year%400==0) count++; return count; } int main() { int year,month,day; int count,sum,num; //!!!!!!!!!

2014华为实习上级笔试题-- 统计字符串中出现的单词

#include<iostream> //#include<string> using namespace std; struct node { char word[10]; int num; }; node obj[100]; void my_word(char input[], char output[]) { int sum=0,flag=0; int i=0,j=0,k=0; while(input[i]!='\0')///////////读入单词 { if((input[

CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》

金色十月线上编程比赛第一题:小女孩数数 题目详情: [金色十月线上编程比赛规则] 一个小女孩正在用左手手指数数,从1数到n.她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5.接下来调转方向,无名指算作6,中指为7,食指为8,大拇指为9,如此反复.问最后会停在那个手指上?用编号1.2.3.4.5依次表示大拇指.食指.中指.无名指.小指. 输入格式: 输入多组数据.每组数据占一行,只包含一个整数n(1<=n<=1000000000). 输出格式: 每组数据占一行,只包含一个介