記錄PTA甲級以及C 部分語法知識1018

2021-09-11 07:01:52 字數 1245 閱讀 6388

**源自:柳婼 の blog,感謝大神!

解答這一題要同時用到dijkstra,先求若干條最短路徑。然後用dfs在所有的最短路徑中找出所求的最佳資料。

哎,對於dfs的回溯部分還是不太熟悉,有些疑問。

哈哈,我快成給柳神寫**注釋的了~加油鴨!要自己寫**鴨~

#include #include #include using namespace std;

const int inf = 99999999;

int cmax, n, sp, m;

int minneed = inf, minback = inf;

int e[510][510], dis[510], weight[510];

bool visit[510];

vectorpre[510], path, temppath;二維向量

void dfs(int v) }}

if(need < minneed)  

else if(need == minneed && back < minback)

temppath.pop_back();回溯???回溯???

return ;

}for(int i = 0; i < pre[v].size(); i++)

dfs(pre[v][i]);///根據dijkstra求的最短路徑前驅陣列,對v的每個前驅進行遍歷

temppath.pop_back();///回溯

}int main()

for(int i = 0; i < m; i++)

dijkstra

dis[0] = 0;//0為源點

for(int i = 0; i <= n; i++)

}//if(u == -1) break;

visit[u] = true;//更新

for(int v = 0; v <= n; v++)

else if(dis[v] == dis[u] + e[u][v])//同一點可有多個前驅

pre[v].push_back(u);}}

}dfs(sp);

printf("%d 0", minneed);

for(int i = path.size() - 2; i >= 0; i--)

printf("->%d", path[i]);

printf(" %d", minback);

return 0;

}

記錄PTA甲級以及C 部分語法知識1012

c 中的sort可對給定區間的所有元素進行排序 include sort begin,end,cmp cmp引數可以沒有,如果沒有預設非降序排序。源自 感謝!這一題我覺得主要是結構體組織的問題吧。相對於我一開始想把id設為字串的想法,用int會好一些。另外,不應該將每門課的成績都開乙個陣列,這樣不同...

記錄PTA甲級以及C 部分語法知識1023

include includeusing namespace std int ans 10 char num1 22 char num2 22 int main void if up 0 ans up 最後的進製 for i 1 i 10 i if ans i 0 break 判斷ans是否全部都為...

記錄PTA甲級以及C 部分語法知識1028

這一題也是不是很難。主要是字串處理的問題。我個人還是比較習慣於c風格的字元陣列的模式。要注意使用strcmp等函式時要加上標頭檔案cstring或者string.h。另外自定義cmp函式中的兩個小問題 一是strcmp返回值是整型數值 1 0或1,要在函式中合理定義。二是分數的比較中,要選擇小於等於...