- 过河
- 2016-01-01 18:42:11 @
#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 条评论
-
尹执信 LV 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 呢…
- 1