[問題] 算次數問題

作者: ouynln (示山)   2016-11-30 20:42:07
開發平台(Platform): (Ex: Win10, Linux, ...)Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):算次數問題
餵入的資料(Input):
S V1;
S V2;
S V3;
V1 V2;
V1 V9;
V2 V3;
V3 V4;
V3 V6;
V2 V5;
V5 V7;
V6 V7;
V7 V9;
V7 T;
V4 V8;
V8 V10;
V8 T;
V9 T;
V10 T;
*[m
預期的正確結果(Expected Output):count = 12個
錯誤結果(Wrong Output):count = 13個
程式碼(Code):(請善用置底文網頁, 記得排版)
string input_name;
string cmp;
string start;
string s;
int count = 0;
input_file.open("input1.txt", ios::in); //開檔
if (!input_file)
{
cout << "開啟檔案開啟失敗";
system("pause");
}
while (!input_file.eof())
{
getline(input_file, start, ' '); //抓取空白格前的字元
getline(input_file, s);
if (count == 0)
{
cmp = start;
count++;
continue;
}
if (count != 0)
{
if (cmp.compare(start) == 0) //跟前一個比,相
同則不算一個點
continue;
else //不相同,則點數加一
{
cmp = start;
count++;
}
}
if (input_file.eof() == true) //最後一個點是終點,所以
無條件加一個點
count++;
}

補充說明(Supplement):S V1 V2 V3 V4 ...... T 都是點
由於我的算法是,每取道一個點,便檢查與上一個點是否相同,不相同則count不會
加一,但由於V2這個點,在第五行與第八行皆有出現,導致會多算一個點,不知道
要如何去做。P.S. 必須為動態的,因為不是每一次都為V2或第五行和第八行。
作者: Caesar08 (Caesar)   2016-11-30 21:46:00
要統計次數的話,應該要把每個不同的都存起來不是只存一個就好
作者: DarkPrincex (DP)   2016-12-01 16:45:00
感覺題目跟做法有點疑惑input看起來像是一個graph,但是題目是要算點的數量另外就是,最後直接加上一個終點所以+1也有點疑惑如果是要辦到原本的功能,倒是可以直接排序解決

Links booklink

Contact Us: admin [ a t ] ucptt.com