[解題報告][ZeroJudge][d504] 第五題:超立方體的路徑問題

下面捏很大,請小心

解題方法:位元運算 + DP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int a[512],n,m,i,j;
int main() {
while (cin>>n&&n) {
m=1<<n;
int result[512]={0};
for (i=0;i<m;i++) scanf("%d",&a[i]);
result[0]=a[0];
for (i=0;i<m;i++) {
for (j=0;j<n;j++) result[i^(1<<j)]=max(result[i^(1<<j)],result[i]+a[i^(1<<j)]);
}
cout<<result[m-1]<<endl;
}
}
,