昨天的月赛题。DP题。不会做,搜了之后凑合理解明白了。
学了下位运算的状态压缩 = =。。。很强大的东西。。。
详见解说http://blog.csdn.net/magicnumber/archive/2011/02/13/6182891.aspx
for(i=0; i<bin[n+1]; i++)
for(k=1; k<=n; k++)
if( (i & bin[k]) == 0 )
for(p=1; p<=n; p++)
if( (i & bin[p]) == 0 && p != k )
dp[i+bin[p]] = max(dp[i]+map[k][p],dp[i+bin[p]]);
maxx = 0;
for(i=0; i<bin[n+1]; i++)
if( dp[i] > maxx )
maxx = dp[i];
printf("%d/n",maxx);
}
return 0;
}