在许多在线编程竞争对手(例如codechef)中,输入有2-5行。主要是第一行包括没有测试用例和包含程序数据的其他行。 例如:
输入:第一行输入包含一个整数T,表示 测试用例数量。然后是T测试案例。每个的第一行 测试用例包含三个以空格分隔的整数N,K和Q为 在问题中描述。第二行包含字符串S of 长度N.然后下一个Q行描述查询,其中第i行 它们包含两个空格分隔的整数Li和Ri。
1
8 2 3
01110000
1 4
2 4
5 8
现在假设在我的代码中我将第一行的输入作为
cin>>no_of_case;
我运行一个for循环时间测试用例的数量我遇到了从第二行输入的问题。
但正如你在输入语句中看到的那样,第二行有3个变量输入。
如何在3个不同的变量中获取第2行的输入?
我发现一种方法是在数组中获取输入并解析空间的数据并将输入分成不同的变量。但长期投入需要很长时间。
答案 0 :(得分:1)
这是您可能正在寻找的算法:
使用getline(cin, no_of_case)
读取所有输入,然后使用空格("")拆分输入作为分隔符。
希望这能让你走上正轨......
注意:如果您打算将输入用作算术目的的数字,则可能需要将这些字符串转换回整数。
编辑:要将字符串数字转换回整数,您可以使用std::stoi()
函数。在此示例中,请使用如下代码:std::stoi(no_of_case)
请确保同时拥有#include <iostream>
和#include <string>
,如果您正在使用名称空间,则不需要std::
前缀。
答案 1 :(得分:0)
简单修复:
cin>>N>>K>>Q;
这应该有用......