求两个算法^-^

TESTMYACM 2005-08-28 10:51:09
确定了最后一层可以确定上面
问一个矩形里面能不能放3个给定大小的圆
怎么做?


求A到B的最短路径.并且打印A到B的所有最短路径
例如A到B的最短路径:10
A->C->B:10
A->E->B:10
那么A到B的所有最短路径:A->C->B,A->E->B
...全文
279 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonfly001 2005-09-22
  • 打赏
  • 举报
回复
确定了最后一层可以确定上面
问一个矩形里面能不能放3个给定大小的圆
怎么做?
/*********************************************************************/
1.平移和旋轉圖形,建立以矩形的邊為坐標的坐標系.
2.分別建立三圓最外點建立4條直線分別平行於X,Y軸.
方法 加設三圓在新座標系的圓心座標為
S1(X1,Y1),半徑R1 外圍'四點 (X1+R1,Y1),(X1-R1,Y1),(X1,Y1+R1),(X1,Y1-R1)
S1(X2,Y2),半徑R2 外圍'四點 (X2+R2,Y2),(X2-R2,Y2),(X2,Y2+R2),(X2,Y1-R2)
S1(X3,Y3),半徑R3 外圍'四點 (X3+R3,Y3),(X3-R3,Y3),(X3,Y3+R3),(X3,Y3-R3)
3.在產生的12點里,分別尋找出MAX(X),MIN(X), 做出平行Y的直線
MIN(Y),MAX(Y)四點. 做出平行X的直線
4.這四條直線四個焦點夠成一個包含三圓的矩形 (和原矩形同向矩形).
5.如果這四點都再原矩形內,則可放,否則不可以.
mathe 2005-09-01
  • 打赏
  • 举报
回复
上面有个错误,应该是
IF(e(x)+d(y)+w(x,y)=d(B)) THEN
而不是
IF(e(x)+d(y)=d(B)) THEN
其中
w(x,y)表示边(x,y)的长度
mathe 2005-09-01
  • 打赏
  • 举报
回复
求所有最短路径可以如下:
i)使用Dijkstra算法可以算出所有点到A的最短距离,即点x到A的最短距离为d(x)
ii)同样使用Dijkstra算法可以算出所有点到B的最短距离,即点x到A的最短距离为e(x)
这时必然有d(B)=e(A)
Empty Stack S;
从B开始出发,进行深度优先遍历,调用函数Search(B);
Function Search(x){
Push x into stack S;
For each y, y是x的邻居
IF y = A THEN
输出Stack S中所有元素和y,这是一个解.
continue;
END IF
IF(e(x)+d(y)=d(B)) THEN
Search(y);
End If
End For
Pop x from stack S
End Function
TESTMYACM 2005-08-31
  • 打赏
  • 举报
回复
chenzhichao2008(陈智超)
如何改造?
TESTMYACM 2005-08-31
  • 打赏
  • 举报
回复
jp1984(compiler)
如果是给出矩形的长和宽,还有三个圆的半径
你的方法就不成立把
chenzhichao2008 2005-08-31
  • 打赏
  • 举报
回复
今天要做報告沒空,改天再寫一個
jp1984 2005-08-29
  • 打赏
  • 举报
回复
求三个圆最小的“包围盒”,将三个圆的坐标点按选定坐标排序。确定最高最低最左最右点的坐标。(可采用图形学中的边扫描线法)从起始线到终止线扫描极端坐标。找到包围盒将其和给定矩形比较即可。
chenzhichao2008 2005-08-29
  • 打赏
  • 举报
回复
求所有最小路徑,只要對圖的最小路徑做小小改造就可以了

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧