这个题目的描述有问题,只说加数不同,没说和不同,一开始才30分。
查看原帖
这个题目的描述有问题,只说加数不同,没说和不同,一开始才30分。
326268
XSMDADA楼主2021/12/27 14:54

这个题目 的描述,一言难尽,一开始只得了30分,后来,将测试数据下载,分析之后,才得满分。

#include<iostream>
#include<algorithm>
using namespace std;
int a[110];
int flag[10010];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n);
	int ans=0;
	for(int i=n-1;i>=0;i--){
		for(int j=0;j<=i-1;j++){
			for(int k=j+1;k<=i-1;k++){
				if(a[i]==a[j]+a[k]&& !flag[a[i]]) {
				
				ans++;
				flag[a[i]]=1;
//				printf("%d+%d=%d\n",a[j],a[k],a[i]);
					
				}
			}
		}
	}
	cout<<ans;
	return 0;
}

原先的代码:

#include<iostream>
#include<algorithm>
using namespace std;
int a[110];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n);
	int ans=0;
	for(int i=n-1;i>=0;i--){
		for(int j=0;j<=i-1;j++){
			for(int k=j+1;k<=i-1;k++){
				if(a[i]==a[j]+a[k]&& !flag[a[i]]) {
				ans++;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
2021/12/27 14:54
加载中...