| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这是floyed算法的一种标准错误写法In Reply To:无语了,wa了n次,真不知道哪地方出问题了!!! Posted by:fuliang at 2009-04-10 23:03:18 请注意floyed算法的本质是动态规划!
定义f(i,j,k)表示只用第0~i个点从j走到k所用的最短路程。
f(i,j,k)=min(f(i-1,j,k),f(i-1,j,i)+f(i-1,i,k))
所以应该是
for(int i = 0; i < sz; i++)
for(int j = 0; j < sz; j++)
for(int k = 0; k < sz; k++){
int t_dis = distances[j][i] + distances[i][k];
if(distances[j][k] > t_dis)
distances[j][k] = t_dis;
}
很多人没有弄懂floyed的本质就开始背“三个for”的代码,所以会出现这种标准错误答案
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator