SOS Ausgabe
Schablone
//iterative version
for(int mask = 0; mask < (1<<N); ++mask){
dp[mask][-1] = A[mask];
//handle base case separately (leaf states)
for(int i = 0;i < N; ++i){
if(mask & (1<<i))
dp[mask][i] = dp[mask][i-1] + dp[mask^(1<<i)][i-1];
else
dp[mask][i] = dp[mask][i-1];
}
F[mask] = dp[mask][N-1];
}
//memory optimized, super easy to code.
for(int i = 0; i<(1<<N); ++i)
F[i] = A[i];
for(int i = 0;i < N; ++i) for(int mask = 0; mask < (1<<N); ++mask){
if(mask & (1<<i))
F[mask] += F[mask^(1<<i)];
}
S (Maske, i) den i-ten 0 auf verschiedene Untergruppen Bit Bit
Zeitkomplexität \ (O (N2 ^ N) \)
Lernprogramm
https://codeforces.com/blog/entry/45223
https://blog.csdn.net/weixin_38686780/article/details/100109753
Beispiel
Übungsaufgaben
Ich hoffe, dass es Ihnen gefallen hat. Im Folgenden sind einige auf SOS gebaut Probleme.
-
https://blog.csdn.net/tianyizhicheng/article/details/100392870
-
Pepsi Cola (ähnelt oben Diskussion Problem ). Müssen sich registrieren um diese Gruppe.
-
Uchiha und zwei Produkte (ähnelt oben Diskussion Problem )
-
Seltsam Funktionen (Wie oben Diskussion Problem )
EDIT : Praxis Probleme sind jetzt in fast Reihenfolge zunehmender Schwierigkeit angeordnet.