2018-11-16洛谷P2141珠心算测验

思路:
1、排序
2、选定一个值,再看他后面两个值相加会不会等于它

第一次解题出错的地方:
1、使用memset函数时要在头文件中加上#include
2、没有注意到题目所问的是

其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

所以有可能会出现某些数,如5,既可以等于1+4又可以等于2+3,如果按照思路进行下去的话它会被计入两次,这就重复了。

看了大佬的题解,我们可以再定义一个数组b,首先初始化它的值,让数组里面的值都等于1,某个数被判定一次后令b的值为0,再在判断条件的时候加上b[i]!=0

附上最后的代码:

#include 
#include 
#include 

int main()
{
 int a[100],b[100];
 int n,i,j,k,count=0;
 memset(b,1,sizeof(b));
 scanf("%d",&n);

 for(i=0;i

你可能感兴趣的:(2018-11-16洛谷P2141珠心算测验)