看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): #include <iostream> using namespace std; #include <queue> #include <vector> #include<fstream> #include<stack> void BFS(int StartNode, vector<vector<bool>> adj, int nodeNum){ int *preNode = new int[nodeNum]; bool *endNode = new bool[nodeNum]; bool *visit = new bool[nodeNum]; for (int i = 0; i < nodeNum; i++){ endNode[i] = true; preNode[i] = -100; visit[i] = false; } preNode[StartNode] = StartNode; queue<int> q; // int k = 0; /*for (int k = 0; k<nodeNum; k++) if (!visit[k]) {*/ // 一、把起點放入queue。 q.push(StartNode); visit[StartNode] = true; // 二、重複下述兩點,直到queue裡面沒有東西為止: while (!q.empty()) { // 甲、從queue當中取出一點。 int i = q.front(); q.pop(); // 乙、找出跟此點相鄰的點,並且尚未遍歷的點, // 依照編號順序通通放入queue。 for (int j = 0; j<nodeNum; j++) if (adj[i][j] && !visit[j]) { q.push(j); preNode[j] = i; endNode[i] = false; visit[j] = true; } } //} cout << "i:" << (StartNode + 1) << endl; for (int k = 0; k < nodeNum; k++){ //cout << "k:" << (k + 1) << endl; stack<int> s; int node = k; s.push(k); int haha = 0; while (node != StartNode &&node != 0) { if (preNode[node] < 0) break; s.push(preNode[node]); node = preNode[node]; if (node == StartNode) haha = 1; } if (haha == 1){ while (!s.empty()){ cout << " v" << (s.top() + 1) << " "; s.pop(); } cout << endl; } } //cout << "i:"<<i << endl; } int main() { int a, b; // 臨時用的 int minNode = 1000;//最小點號碼 int maxNode = 0;//最大點號碼 vector<int> sN, eN;// 每個邊的StartNode 和 EndNote //輸入txt檔 fstream fin; fin.open("test.txt", ios::in); while (fin >> a >> b){ if (a < minNode) minNode = a; if (b < minNode) minNode = b; if (a> maxNode) maxNode = a; if (b > maxNode) maxNode = b; sN.push_back(a); eN.push_back(b); } int nodeNum = maxNode - minNode + 1; vector<vector <bool>> adj; adj.resize(nodeNum); for (int i = 0; i < nodeNum; i++){ adj[i].resize(nodeNum); for (int j = 0; j < nodeNum; j++){ adj[i][j] = false; } } for (int i = 0; i < sN.size(); i++){ adj[sN[i] - 1][eN[i] - 1] = true; } for (int i = 0; i < nodeNum; i++){ BFS(i, adj, nodeNum); } system("pause"); return 0; } 在xcode上顯示錯誤訊息 http://i.imgur.com/DQzVxLg.jpg 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.17.9 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445486841.A.45F.html
wwyes: nodeNum 是 -999捏~ 你訊息上面不是有寫嗎 10/22 12:11
hello881g: 可是為什麼在vs上沒有這個問題呢? 10/22 16:16
longlongint: 被和諧掉了之類的吧 10/22 19:28
yvb: 意思是說vs可以讀到檔案,xcode不行... 執行的目錄不同? 10/22 20:35
Killercat: 工作目錄不同 你去xcode左邊project 看一下執行黨 10/23 18:27
Killercat: 按右鍵選show in finder 你就懂了 10/23 18:27