样例可以过,dfs做法,为什么全TLE?求助
查看原帖
样例可以过,dfs做法,为什么全TLE?求助
1262308
jyk17737950829楼主2024/3/6 10:41
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
const int M = int(pow(10,9) + 7 );
int n;
int arr[5050];
int ans;
vector<int> num;

bool isFlag(){
//	for(int i=0; i<num.size(); i++){
//		cout << num[i]<<" ";
//	}
//	cout << endl;
	// 首先排序
	sort(num.begin(), num.end());
	if (num[0]+num[1] == num[2]
	&&  num[2] == num[3]){
		return true;
	} 
	return false;
	
}

void dfs(int step){
	if (num.size() == 4){
		if (isFlag())	ans++;
		return;
	}
	for(int i=step; i<n; i++){
		num.push_back(arr[i]);
		dfs(i+1);
		num.pop_back();
	}
}
 
int main(){
	cin >> n;
	for(int i=0; i<n; i++){
		cin >> arr[i];
	}
	sort(arr, arr+n);
	dfs(0);
	cout << ans % M;
	return 0;
}
2024/3/6 10:41
加载中...