[问题] 算次数问题

楼主: 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