我一直在尝试解决Codechef竞赛问题。在我的程序逻辑中,第一和第二次迭代一切正常,并给出了所需的结果,但是在第二次迭代中,cin语句被完全忽略了。但是,具有cout<<" ss ";
的下一行工作正常。
我已经搜索了堆栈溢出的可能解决方法,他们说使用cin.clear()和cin.ignore(),但我仍然没有用。我做错了吗?
这里是问题https://www.codechef.com/problems/DIET的链接
#define REP(limit) for(int i = 0; i < limit; i++)
#define REP2(limit2) for(int j = 0; i < limit2; j++)
int main()
{
int testcases;
cin>>testcases;
while(testcases--){
int days, diet, current = 0;
cin>>days>>diet;
bool res = true;
REP(days){
int x;
cin>>x;
cout<<" ss ";
current += x;
if(current < diet){
cout<<"NO "<<i+1;
res = false;
break;
}
current -= diet;
}
if(res == true){
cout<<"YES";
}
}
return 0;
}
如果得出结论“否”,则退出循环,将该行的其余部分保留在输入缓冲区中。在发布测试用例的情况下,您将在第二种情况下读取3
并打印“否”,将10 10
保留为“天数”和“饮食”,将3 4 8 1 1
留作第三种情况的读入。
一次读取一行或使用std::ignore
。