it.begin()做完自减操作之后,就是it.end()
所以你这个代码再自减一次也是可以的。
实际上就是it--之后,指向的迭代器位置是,最后一个元素之后,插入的时候是没问题的,但是删除的时候就不行了,如果想要删除最后一个元素应该改成
it=l.end(); l.erase(--it);
这样就可以了。
不会编辑C++代码 汗
可以通过一个数组存递归已经算出来的数字
long long ans[1000]; long long Frog(int x) { long long &ans=a[x]; if(ans!=0) return ans; if(x==1||!x) return ans=1; return ans=Frog(x-1)+Frog(x-2); }
本质出现问题的原因就是递归次数过多,很多计算都是重复的,所以加个数组记忆一下就行了