P2141珠心算测验(2014NOIP普及T1)-C++编程解析-数组

题目1
说明/提示
【样例说明】
由1+2=3,1+3=4,故满足测试要求的答案为2。
注意,加数和被加数必须是集合中的两个不同的数。
【数据说明】
对于100%的数据,3<=n<=100,测验题给出的正整数大小不超过10,000。

解题思路:
通过题目分析可知,我们的目标是去寻找集合中的三个数,使其满足一个数加另一个数等于第三个数。所以,我们可以利用循环嵌套来找这三个数。最外层的循环我们作为第一个加数,中间层的循环我们作为另一个加数,最内层循环我们作为和。这样,每找到一个我们就标识出来,最后,进行统计即可。

参考程序:

#include<iostream>
using namespace std;
int main(){
	int num[100] = {0};      //随机数集合    
	int exist[100] = {0};    //存在标识 
	int n,equations = 0;     //n--随机数个数, equations符合要求数目 
	cin>>n;
	for(int i = 0;i < n;i++)
		cin>>num[i];
	for(int i = 0;i < n-1;i++){   //选取被加数 
		for(int j = i+1;j < n;j++){  //选取加数 
			for(int k = 0;k < n;k++){  //遍历所有数字 
				//满足条件
				if(exist[k] == 0 && num[k] == num[i] + num[j]){   
					exist[k] = 1;   
					break;
				}
			} 
		}
	}
	//统计 
	for(int i = 0;i < n;i++){  
		if(exist[i] == 1)
			equations++;
	}
	cout<<equations;   
	return 0;
}

程序结果:
程序结果
问候

发布了34 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xingzhe_666/article/details/102411955