C语言一笔画,c语言画图
Yyds干货库存
标题:
豆豆对数字的痴迷让他在科学领域游刃有余,但他近乎疯狂的投入也让父母忧心忡忡。为了让孩子全面发展,他们决定拓宽他的学习领域。我家旁边就有一个绘画培训中心,我爸妈就给豆豆报了名。画画的第一天,豆豆产生了浓厚的兴趣,他自告奋勇买了很多画笔。刷子的种类很多,豆豆有个习惯,就是买两把颜色一样的刷子,一把备用,这样一共省了N把刷子(N是偶数,1N10000)。
然而,数字的敏感性无孔不入,豆豆的脑海里蹦出一个奇怪的问题:如果你蒙上眼睛,随便拿一支画笔,通过分析剩下的N-1支画笔,就能找出是哪种颜色被拿走了。你能回答他吗?
输入格式:第一行是整数N(N为偶数,1 N为100000),意思是题目描述中剩余刷数为N-1。
在第二行中,由空格分隔的N-1个正整数AI (0AI10000)表示剩余画笔的颜色编号。
注意:数据保证一个画笔的色号出现一次,其他出现两次。
输出格式:一个整数,表示被取走的画笔的颜色数。
样本输入:10
1 9 11 5 3 11 5 9输出示例:3点睛之笔:此题是指在一组乱序数组中,有多组相同元素的个数为2,但只有一组数据的个数为1。需要找出哪个单数组?
回答:这个问题有两种算法。
方法一:使用排序函数进行搜索(因为排序函数只适用于C,所以这种方法不适用于C语言)
想法:
如何在不设置变量的情况下输入n?可以先打开一个大数组,然后输入变量。该方法的核心是如何查询有序数组中的单个元素。因为元素已经排序了,相同的元素是成对排序在一起的,所以只需要成对搜索,也就是i=2在第二个for循环中很重要!
方法2:使用按位XOR运算符(key!也是最难理解的)
首先,我们需要复习操作者的操作规则。
如果两个数相同,输出结果为0;如果两个数不同,输出结果为1;任何值与其自身异或,结果为0。任意值与0异或,结果是其自身的交换律A B C=B A C结合律。我们知道之后,可以这样理解。初始化数组内容后,两个相同为一组,只剩下一个。根据交换律,我们直接把两个相同的放在一起,输出结果是0;此时,根据任意值与0的异或等于该值本身,综上所述,可以直接输出单个的。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。