初学也没有学专业的算法,想问下大佬这样为什么不行
查看原帖
初学也没有学专业的算法,想问下大佬这样为什么不行
1215698
Li820923楼主2023/12/2 00:18
using namespace std;
double min_mx = 100000000;
struct people {
	int a;//左手
	int b;//右手
};
void swap(people* arr, int i, int j) {
	people temp = arr[i];
	arr[i] = arr[j];
	arr[j] = temp;
}
void permute(people* p, int n, int start) {
	if (start == n) {
		int x = 1;
		int mx = 0;
		for (int i = 1; i < n + 1; i++) {
			for (int j = 0; j < i; j++) {
				x = x * p[j].a;
			}
			x /= p[i].b;
			if (x > mx) {
				mx = x;
			}
			x = 1;
		}
		if (mx < min_mx) { // 更新 min_mx
			min_mx = mx;
		}
		return;
	}
	for (int i = start; i < n+1; i++) {
		swap(p, start, i);
		permute(p, n, start + 1);
		swap(p, start, i);
	}
}
int main() {
	int n; cin >> n;//大臣人数
	people* person = new people[n + 1];//总人数数组
	for (int i = 0; i < n + 1; i++) {
		cin >> person[i].a;
		cin >> person[i].b;
	}
	permute(person, n, 1);
	cout << min_mx << endl;
	delete[]person;
2023/12/2 00:18
加载中...