来源:蜘蛛抓取(WebSpider)
时间:2016-04-11 08:57
标签:
c程序设计语言第三版
自考365收集了部分科目的历年试题,您可以点击列表中的试卷名称获得该课程的试题。未列出的课程可以借助试题搜索来查找。点击下拉箭头选择您要搜索试卷的年份和月份,如不选择则默认为自考365试题库中该课程的全部试题。
为了增加搜索的准确度,您可以减少关键字。如要搜索“思想道德修养与法律基础”,只搜索“思想道德修养”即可。在进行试题搜索时,如遇PDF格式,请下载阅读软件。
热门搜索:
每页显示34条信息 当前第1/1页
C++程序设计
1&当前1/1页&&共15条记录
& & & & & & & & & & & &
网校视频辅导课程
& & & & & & 课程价格150元/门 60元/门
150元/门 480元/门 60元/门 30元/门 180元/门后使用快捷导航没有帐号?
只需一步,快速开始
今日: 0|主题: 750
- [售价 2 枚C币]
- [回帖奖励
( 粤ICP备号-2 ) Floyd All Shortest Path 所有最短路径的查找在严慧敏这本书也有介绍,但是这本书是讲数据结构的,没有介绍这个算法是什么算法,其实这个算法是动态规划法。 思路: 1 用一个矩阵来记录从i到j的最短路径 2 用三层循环,选好一个点k,然后把所有其他点组成两对i和j;测试从i到j是直接走近,还是从i经过k最后到j比较近一点。如果绕道k之后花费更小一点,那么就更新[i][j]的数据。 3 循环完毕就记录了所有两点之间的最短距离了。 看下面的实现程序,用了两个循环,第一循环是赋值给记录最短路径的矩阵,第二个循环就是实际记录最短路径的算法。 用了两个矩阵,第二个矩阵是为了可以打印出来两点之间的最短路径都经过了那些点: [cpp] #include #include class Solution { public: vector<vector<vector > > FloydAllShortestPath(vector<vector >& matrixGraph, vector<vector<vector > >& pathM) { int n = matrixGraph.size(); vector<vector<vector > > allPathNum(n); pathM.resize(n); for (int i = 0; i < i++) { allPathNum[i].resize(n); pathM[i].resize(n); for (int j = 0; j < j++) { allPathNum[i][j].resize(n+1); allPathNum[i][j][0] = matrixGraph[i][j]; pathM[i][j].resize(n+1); } } for (int k = 0; k < k++) { for (int i = 0; i < i++) { for (int j = 0; j < j++) { allPathNum[i][j][k+1] = min(allPathNum[i][j][k], allPathNum[i][k][k] + allPathNum[k][j][k]); pathM[i][j][k] = allPathNum[i][j][k]>allPathNum[i][k][k]+ allPathNum[k][j][k]? 1:0; } } } return allPathN } }; 测试主程序太大了,所以分开比较好看: [cpp] int main() { int a[] = {0, 2, 9}; vector v(a, a+3); vector<vector > vA vArray.push_back(v); v[0] = 8 ;v[1] = 0; v[2] = 6; vArray.push_back(v); v[0] = 1 ;v[1] = INT_MAX; v[2] = 0; vArray.push_back(v); for(auto x: vArray) { for(auto y:x) cout《y《"\t"; cout《 } cout《 vector<vector<vector > > allPathN vector<vector<vector > > S allPathNum = solu.FloydAllShortestPath(vArray, pass); for(auto x: allPathNum) { for(auto y:x) { for(auto z:y) cout《z《"\t"; cout《 } cout《 } cout《 for(int i=0; i< pass.size(); i++) { for (int j = 0; j < pass[i].size(); j++) { cout《"Vector "《i《" to "《j《" pass:"; for (int k = 0; k < pass[i][j].size(); k++) { if(pass[i][j][k] == 1) cout《k《"\t"; } cout《 } cout《 } system("pause"); return 0; }
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益