所以我试图解决问题,我的问题是:
首先,我有一个输入n =2:
,它确定我有多少测试用例。假设m
,则下一个输入为m =4 :
- 这是以下序列中有多少个数字。假设1 0 3 5
下一个输入是一个序列示例:m
。接下来我得到另一个m
和另一个序列,依此类推。所以我需要输入n
及其序列scanf
次....我不能用https://graph.facebook.com/{fanpageId}/posts?access_token={token}&fields=application,created_time,likes.summary(true),comments.summary(true),shares,name,link,from,type,picture&limit=100
来做。
看看problem,了解我的意思。
答案 0 :(得分:4)
我猜你不会得到你应该在这里做的事情。您将首先获得一些测试用例,然后您将为每个测试用例完成工作。
if(scanf("%d",&n)==1){
while(n--){
..
if( scanf("%d",&m) != 1){
/* handle error */
}
..
for(size_t i = 0; i<m; i++){
if( scanf("%d",&a[i])!= 1){
/* handle error */
}
}
..
// do work with array a[]
}
}
立即提供所有输入并不意味着您必须将所有输入放在一起。我上面显示的方法是处理这些问题的常用方法。
这里我们基本上按块处理输入块。最初我们得到了测试用例的数量,然后我们正在while
个循环运行n
次。在每次迭代中,我们首先得到输入m
,然后在得到输入后处理序列的m
个数。
我在这里检查了scanf
的返回值,以防scanf
无法解析int
的错误,并将其分配给地址已通过的相应变量到scanf
然后我们可能会遇到错误情况,我们会处理它(最有可能是通过显示消息并退出代码)。如果是scanf
- 它将返回其扫描和分配的成功项目数。我们期望每次调用时scan
1个数字,并将其分配给已经传递地址的变量。这就是在这里所做的。如果成功,它将返回1
。