如何解决显示错误的输出
这是来自hackerrank的问题。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int jump=0;
int a[101];
a[0]=0;
for (int i = 1; i < n; i++) {
cin>> a[i];
}
for(int j=1;j<n;j++)
{
if(a[j]==1)
{
jump++;
}
if(a[j]==0)
{
jump++;
if(a[j-1]==0 && a[j-1]==1)
jump--;
}
}
cout<<jump;
return 0;
}
Emma正在玩一个新的手机游戏,该游戏以连续编号的云开始。有些云是雷雨,有些是积云。她可以跳到任何积云,该积云的数量等于当前云的数量加上1或2。她必须避免打雷。确定Emma从起始位置跳到最后一朵云所需的最小跳数。总是有可能赢得比赛。
对于每个游戏,如果安全,艾玛都会得到一个数组,编号为0,如果必须避免,则编号为1。例如,c = [0,1,0]从0 ... 6索引。每个云上的数字是其在列表中的索引,因此她必须避免在索引1和5处出现云。她可以遵循以下两条路径:0-> 2-> 4-> 6或0-> 2-> 3- > 4-> 6。第一条路径需要3次跳跃,而第二条路径需要4次跳跃。因此,我们必须打印出赢得比赛所需的最小跳跃次数。
这是输入/输出:
7
0 0 1 0 0 1 0
预期输出为:4
我的错误输出:6
解决方法
我看到的第一个明显的问题是第二个循环永远不会结束,因为j
永远不会递增。此外,条件
if(a[j-1]==0 && a[j-1]==1)
没有任何意义。 a [j-1]只能是0或1,除非您在量子计算机上运行它,否则都不能为0。解决这些问题,然后从那里开始工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。