思路:深度搜尋複雜度n!過不了。考慮動態規劃:將已經選擇的列記為1,未選擇表示0,二進位制壓縮,例如110,就表示選擇了第1列和第2列。
d(i, t)表示當前已經匹配了i行,選擇了t這些列。狀態轉移:
for(int i = 0; i < n; ++i)
此時總的狀態數就是1<
用記憶化搜尋,**很好寫。
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#pragma comment(linker, "/stack:1024000000,1024000000")
#define eps 1e-10
#define inf 0x3f3f3f3f
#define pi pairtypedef long long ll;
const int maxn = 13 + 5;
int like[maxn][maxn], dp[maxn][1<<13];
int n, ans;
int dfs(int row, int val, int k)
} for(int i = 0; i < n; ++i)
return d;
}int main()
memset(dp, -1, sizeof(dp));
int start = (1<
演算法提高 金陵十三釵
problem description在電影 金陵十三釵 中有十二個秦淮河的女人要自我犧牲代替十二個女學生去赴日本人的死亡宴會。為了不讓日本人發現,自然需要一番喬裝打扮。但由於天生材質的原因,每個人和每個人之間的相似度是不同的。由於我們這是程式設計題,因此情況就變成了金陵n釵。給出n個女人和n個學生...
演算法提高 金陵十三釵 狀態亞索DP
問題描述 在電影 金陵十三釵 中有十二個秦淮河的女人要自我犧牲代替十二個女學生去赴日本人的死亡宴會。為了不讓日本人發現,自然需要一番喬裝打扮。但由於天生材質的原因,每個人和每個人之間的相似度是不同的。由於我們這是程式設計題,因此情況就變成了金陵n釵。給出n個女人和n個學生的相似度矩陣,求她們之間的匹...
藍橋 金陵十三釵 狀壓 記憶化搜尋
題目描述 在電影 金陵十三釵 中有十二個秦淮河的女人要自我犧牲代替十二個女學生去赴日本人的死亡宴會。為了不讓日本人發現,自然需要一番喬裝打扮。但由於天生材質的原因,每個人和每個人之間的相似度是不同的。由於我們這是程式設計題,因此情況就變成了金陵n釵。給出n個女人和n個學生的相似度矩陣,求她們之間的匹...