c159 - NOIP2014 1.珠心算测试
題目描述
題目要求在給定的正整數集合中,找出有多少個數字恰好等於集合中另外兩個不同數字的和。
解題思路
此題採用暴力解法。對於集合中的每個數字,遍歷其他所有可能的數字組合,檢查是否存在兩個數字的和等於該數字。由於數字個數不多(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";
}