/ Vijos / 讨论 / 过河 /

我的这个代码为啥会RE呢??Linux上测试示例都过了啊

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int ans=0,i,L,s,t,m,cur,rock[200],have[200];
void dfs(){
for (i=t; i>=s; i--) {
if (!have[cur-i]) {
cur-=i;
}else if(i==s){
cur-=t;
ans++;
}
if (cur<=t) {
printf("%d\n",ans);
exit(0);
}
}
dfs();
}
int main(){
memset(have, 0, sizeof(have));
scanf("%d",&L);
cur=L;
scanf("%d%d%d",&s,&t,&m);
for (i=0; i<m; i++) {
scanf("%d",&rock[i]);
have[rock[i]]=1;
}
dfs();
return 0;
}
有人说要对石头排序,但是我觉得不排序也行啊……
而且我觉得我的数组定义的足够大啊……应该不会有越界的可能……
我是让青蛙往回跳……
刚才改了下代码,让青蛙正着跳,但是还是RE了……求解……

4 条评论

  • @ 2016-12-03 15:46:39

    要排序
    他没有说已经是有序的

  • @ 2016-10-02 14:09:14

    数组要省掉,不然空间不够
    还有石头要离散化,不然就超时了

  • @ 2016-07-23 13:26:55

    数组要去滚,不然空间不够
    还有石头要离散化,不然就T了

  • @ 2016-01-01 20:57:46

    rock[i] 范围 1 ~ 10^9 呢…

    • @ 2016-01-02 21:54:14

      我用rock数组来记录输入的石块,也就是示例数据中的 2 3 5 6 7

    • @ 2016-01-02 21:54:41

      所以应该不用那么多,M<=100

    • @ 2016-01-02 21:56:50

      哦哦哦……我明白了……谢谢!

  • 1

信息

ID
1002
难度
7
分类
动态规划 点击显示
标签
递交数
25264
已通过
4390
通过率
17%
被复制
76
上传者