这道题本蒟蒻已经做了近一周,大大小小的修改多达十几处,从原来的单纯验证结果到后面加上了好几个查重程序,可是分数永远停留在20分。麻烦各位大佬救救本蒟蒻吧orz orz
#include <bits/stdc++.h>
#define MAXN 1000
using namespace std;
int main(){
int a[MAXN], m[MAXN], n, sum, tmp=0, mmp=0;
cin >> n;
for ( int i=0; i<n; i++) {//输入
cin >> a[i];
m[i]=a[i];//这个数组用来去重
}
for ( int i=0; i<n; i++){
for (int b=i+1; b<n; b++){//防止漏加
if ( a[i]!=a[b]) sum =a[i]+a[b];//防止同一个数相加
for ( int j=i; j<n; j++) {//验证
if ( sum== m[j]){
tmp++;
mmp=m[j];
m[j]=0;//去重
sum=0;//防重
}
if ( mmp==m[j]) m[j]=0;//查重并去重
}
}
}
cout << tmp;//输出
return 0;
}
(ps:本蒟蒻用的是暴力枚举方法,10个数字以下的随机数列和100个数字以下的等差数列都是没错的)