60分,实在是想不到什么问题了,求助!
查看原帖
60分,实在是想不到什么问题了,求助!
177543
水思源楼主2024/11/22 11:52

下面是我的代码 先把它降序排列,然后再一个个访问,倘若满足题设就计数,并且注意到了一个较大的数若可以多次被后面的数表出,则只会记录一次(用bool数组实现),我觉得逻辑没啥问题了啊,求助大佬们,给我指出错误之处,谢谢!

#include <iostream>
#include <vector>
#include<algorithm>
bool customize(int a,int b)
{
	return a>b;
}
using namespace std;
int main()
{
	int sum=0,n;
	cin>>n;
	vector<int> a;
	vector<bool> b(n,1);
	for(int i=0;i<=n-1;i++)
	{
		int temp;
		cin>>temp;
		a.push_back(temp);
	}
	sort(a.begin(),a.end(),customize);
	
	for(int i=0;i<=n-3;i++)
	{
		for(int j=1;j<=n-2-i;j++)
		{
			for(int x=1;x<=n-1-j;x++)
			{
				if(b[i])
				{
					if(a[i]==a[i+j]+a[j+x])
				{
					sum++;
					b[i]=0;
				}
				}
				
			}
		}
	}

	cout<<sum;
	
	return 0;
}
2024/11/22 11:52
加载中...