洛谷 P2141 珠心算测验 题解

P2141 珠心算测验

题目


Main Idea:

    随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

Summary:

    1.读题:因为另外两个不同数之和可能相等,而且这里提问是有多少个数等于另外两个不同数之和,所以这里有去重的意思。

Problem Solving Idea:

    (第一次读题的时候被“集合中的数各不相同”给麻痹了,所以脑子宕机完全没意识到另外两个不同数之和也可能会是同一个数QAQ)
    标记去重。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int b[20051];
int main()
{
	int n,temp=0,ans=0;
	cin>>n;
	int a[n+1];
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	for(int i=0;i<n;i++)	cin>>a[i];
	for(int i=0;i<n-1;i++){
		for(int j=i+1;j<n;j++){
			temp=a[i]+a[j];
			for(int k=0;k<n;k++){
				if(a[k]==temp&&k!=i&&k!=j){
					if(b[temp]==0)	ans++;
					b[temp]++;
					break;
				}
			}
		}
	}
	cout<<ans;
    return 0;
}
原文地址:https://www.cnblogs.com/Fhr2001/p/12032365.html