题目: http://poj.org/problem?id=2531
这个题虽然是个最大割问题,但是分到dfs里了,因为节点数较少。。
我试着位运算枚举了一下,开始超时了,剪了下枝,1079MS过了。。
好在我的代码貌似是最短的,只有430B。。。
#include <stdio.h> int main()
{
int n, map[][];
scanf("%d", &n);
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
scanf("%d", &map[i][j]);
int ans = ; //剪枝就是把i++改成了i+=2,让i总是奇数
for(int i = ; i < (<<n); i += )
{
int sum = ;
for(int j = ; j < n; j++)
{
if(i & (<<j))
{
for(int k = ; k < n; k++)
if((~i) & (<<k))
sum += map[j][k];
}
}
if(sum> ans)ans = sum;
}
printf("%d\n", ans);
return ;
}