标签:tween space problem rate oid info 意思 mil input
Input
Output
Sample Input
3
0 50 30
50 0 40
30 40 0
Sample Output
90
题目意思:
有多个结点,每个结点之间有距离,把这些结点分成两部分,A部分结点之间认为没有距离,但与B部分每个结点都有距离,求使其最大的距离
解法:
DFS暴力枚举的方法
1 #include<iostream>
2
3 using namespace std;
4
5 const int Max = 21;
6 const bool A = true;
7 const bool B = false;
8
9 int n, map[Max][Max], ans = 0;
10 bool set[Max];
11
12 void dfs(int dep, int sum)
13 {
14 if(dep > n){
15 if(sum > ans)
16 ans = sum;
17 return;
18 }
19
20 int m;
21 m = 0;
22 set[dep] = A;
23 for(int i = 1; i <= dep; i ++)
24 if(set[i] == B)
25 m += map[i][dep];
26 dfs(dep + 1, sum + m);
27
28 m = 0;
29 set[dep] = B;
30 for(int i = 1; i <= dep; i ++)
31 if(set[i] == A)
32 m += map[i][dep];
33 dfs(dep + 1, sum + m);
34 }
35
36 int main()
37 {
38 cin >> n;
39 for(int i = 1; i <= n; i ++)
40 for(int j = 1; j <= n; j ++)
41 cin >> map[i][j];
42 dfs(1, 0);
43 cout << ans << endl;
44 return 0;
45 }
标签:tween space problem rate oid info 意思 mil input
原文地址:http://www.cnblogs.com/a2985812043/p/7233797.html