# Brute Force# Two Sum# Array

c159 - NOIP2014 1.珠心算测试

🔗 前往 ZeroJudge 原題

題目描述

題目要求在給定的正整數集合中,找出有多少個數字恰好等於集合中另外兩個不同數字的和。

解題思路

此題採用暴力解法。對於集合中的每個數字,遍歷其他所有可能的數字組合,檢查是否存在兩個數字的和等於該數字。由於數字個數不多(n <= 100),暴力解法可以有效地找到答案。外層迴圈遍歷每個數字,內層迴圈使用兩個嵌套迴圈來遍歷所有可能的數字組合。如果找到兩個數字的和等於外層迴圈的數字,則計數器加一。

複雜度分析

  • 時間複雜度: O(n^3)
  • 空間複雜度: O(n)

程式碼

#include <iostream>
using namespace std;
int main(){
	int a;
	cin >> a;
	int b[a],ans=0;
	for(int i=0;i<a;++i)
		cin >> b[i];
	for(int i=0;i<a;++i){
		bool add=0;
		for(int j=0;j<a&&add==0;++j){
			if(j==i)continue;
			for(int k=j+1;k<a&&add==0;++k){
				if(k==i)continue;
				if(b[j]+b[k]==b[i])add=1;
			}
		}
		ans+=add;
	}
	cout << ans << "\n";
}

Discussion