回溯法 工作分配問題(dfs)

2021-10-10 17:56:54 字數 634 閱讀 7680

#include

using

namespace std;

typedef

long

long ll;

const

int maxn=

1e5+5;

const

int inf=

0x3f3f3f3f

;int n,c[20]

[20];

//將工作i分配給第j個人所需要的費用

//每個人分配到乙個對應的工作,n個工作分別分配給n個人

int vis[20]

;//vis陣列標記已經被分配了的工作,不重複分配

int ans=inf,sum=0;

//求最小費用,ans初始化為無窮大

//sum初始化為0,在計算回溯的過程中,回溯到最開始的點時自動為0

void

dfs(

int x,

int y)

for(

int j=

1;j<=n;j++)}

}int

main()

}dfs(0

,0);

cout

}

工作分配問題 (回溯法)

工作分配問題 time limit 1000 ms memory limit 65536 kib problem description 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為 cij。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。設計乙個演算法,對於...

回溯法解決工作分配問題及分析

工作分配問題 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入格式 輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。輸出格式 將計算出的最小總費用...

回溯法 n皇后問題 DFS

在n n的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之在同一行,同一列,同一斜線上的棋子。現在在n n的棋盤上放置n個皇后,使彼此不受攻擊。在放置皇后的過程中,我們要考慮三個方面,不能同行,不能同列,不能同對角線。那麼就可以從行出發,即每個皇后放在一行中,這樣只需考慮與已放置...