C++ spoj的防印迹体系

C++ spoj的防印迹体系,c++,string,algorithm,C++,String,Algorithm,我陷入了一个问题 我在所有测试用例上执行了我的程序,我得到了正确的答案 但我还是在spoj上得到了“错误答案” 我所尝试的: 将流分解为字符串并将其存储为向量,所以我们可以这样说 我们的向量将有5个字符串(numstring,+,numstring,=,numstring),然后当我们在字符串中发现m时,我们将检查每个字符串,我们知道 此位置的字符串是需要借助其他数字字符串计算的变量 我们还可以确定,带数字的字符串只能在向量中的0,2,4索引处,其他两个索引将具有+和= 测试用例: 输入: 三,

我陷入了一个问题

我在所有测试用例上执行了我的程序,我得到了正确的答案

但我还是在spoj上得到了“错误答案”

我所尝试的:

将流分解为字符串并将其存储为向量,所以我们可以这样说 我们的向量将有5个字符串(numstring,+,numstring,=,numstring),然后当我们在字符串中发现
m
时,我们将检查每个字符串,我们知道 此位置的字符串是需要借助其他数字字符串计算的变量

我们还可以确定,带数字的字符串只能在向量中的
0,2,4
索引处,其他两个索引将具有
+和=

测试用例:

输入:

三,

23+47=马赫拉

3247+5machula2=3749

马赫数13+75425=77038

输出:

23+47=70

3247+502=3749

1613+75425=77038

#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int t;
(cin>>t.get();
而(t--){
字符串str;
getline(cin,str);
串流分裂(str);
每根绳子;
向量标记;
while(getline(拆分,每个“”){
///扫描流的每个部分;
代币。推回(每个);
}
int ind=-1;
for(inti=0;icout我知道这很烦人,您的解决方案没有逻辑错误,但您应该更仔细地阅读问题描述。它说:

每个测试用例前面都有一个空行

因此,输入是:

3

23 + 47 = machula

3247 + 5machula2 = 3749

machula13 + 75425 = 77038
请注意行之间的空行。 只需将代码修复为:

// Blablabla before getline
getline(cin, str);
getline(cin, str);
stringstream split(str);
// The rest of your code

这应该可以解决问题。

无法判断SPOJ将哪些测试用例应用到您的代码中,因为这些测试用例并未公开。如果您认为您的程序在您尝试的所有测试用例中都能正常工作,您可以在上请求改进。这里,您需要显示一个测试用例以及您观察到的问题。否则,您的问题是离题。你能在这里解释一下使用额外的getline的逻辑吗?这只是正确读取输入的问题,而原始代码没有。每个输入行之前都有一个空行。这就是问题的作者决定格式化输入的方式。因此,额外的getline所做的只是跳过除了空白,这个解决方案是有效的。除了使用另一个<代码> GETLINE()/<代码>调用,只需使用断线是多余的。您可以使用<代码> CIN。
// Blablabla before getline
getline(cin, str);
getline(cin, str);
stringstream split(str);
// The rest of your code