題目描述:售貨員的難題
某鄉有n個村莊(1< n < 20),有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s(0 < s < 1000)是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村,假設商店所在的村莊為 1,他不知道選擇什麼樣的路線才能使所走的路程最短。請你幫他選擇一條最短的路。
輸入村莊數n和各村之間的路程(均是整數)。
輸出最短的路程
樣例輸入
3樣例輸出0 2 1
1 0 2
2 1 0
3思路:就是dfs,但是減枝比較麻煩,還可以用dp。
這種寫法超時!!!
//售貨員的難題.cpp : 定義控制台應用程式的入口點。
//#include
"stdafx.h
"#include
#include
#include
#include
using
namespace
std;
const
int max = 100
;int
n, ans, vis[max], map[max][max];
void dfs(int pos, int sum, int
cnt)
if (sum > ans) return
;
for (int i = 0; i < n; i++)
}}int
main()
vis[
0] = 1
; dfs(
0, 0,1
); cout
<< ans
}
預處理一下就好了。
#include#includeusing
namespace
std;
int n, g[20][20], r[20][20], f[20], ans = 0x7fffffff
;void dfs(int now, int sum, int
dis)
for (int i = 1; i <= n; i++)
if (f[i] == 0
)
}int
main()
售貨員的難題
售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...
售貨員的難題
售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...
售貨員的難題
某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村,假設商店所在的村莊為 1,他不知道選擇什麼樣的路線才能使所走的路程最短。請你幫他選擇...