已开启
回溯法跳房子问题-湖北工业大学-邓翕宁-徐承志 #152
回溯法跳房子问题-湖北工业大学-邓翕宁-徐承志 #152
已开启
2301_81566275创建于 2025年7月8日
3 个文件变更+39-0
@@ -0,0 +1,2 @@
1+回溯法:桥本分数
2+将1-9九个数不重复地赋给不同的9个元素 ,实现形如a/bc+d/ef=f/hi 的形式。例:1/26+5/78=4/39 1/32+5/96=7/84 (注意:1/26+5/78=4/39 和5/78+1/26=4/39 只能算一种解),共有多少种不同的解
@@ -0,0 +1,37 @@
1+#include <iostream>
2+#include <algorithm>
3+#include <vector>
4+using namespace std;
5+ 
6+int main() {
7+ vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
8+ int count = 0;
9+
10+ do {
11+ int a = nums[0], b = nums[1], c = nums[2];
12+ int d = nums[3], e = nums[4], f = nums[5];
13+ int g = nums[6], h = nums[7], i = nums[8];
14+
15+ int bc = 10 * b + c;
16+ int ef = 10 * e + f;
17+ int hi = 10 * h + i;
18+
19+ long long left1 = (long long)a * ef * hi;
20+ long long left2 = (long long)d * bc * hi;
21+ long long right = (long long)g * bc * ef;
22+
23+ if (left1 + left2 == right) {
24+ int comp1 = a * ef;
25+ int comp2 = d * bc;
26+
27+ if (comp1 < comp2) {
28+ count++;
29+ } else if (comp1 == comp2 && a <= d) {
30+ count++;
31+ }
32+ }
33+ } while (next_permutation(nums.begin(), nums.end()));
34+
35+ cout << count << endl;
36+ return 0;
37+}