刚刚看了下别人的代码,发现状态转移方程不同
对于跳n次,无限制条件共有2^(n-1)种方法
dp(n-1)表示跳n-1次落到了起点,那么下次跳( dp(n) )必然不会落到起点
my
dp(n)=2^(n-1)-dp(n-1);
others:
dp(n)=dp(n-1)+dp(n-2)*2;
可能是思维方式不同吧
#include <iostream>
using namespace std;
int dp[1005]={0,0,2,2};
int a=4;
int mod=10000;
int main()
{
int i,j,k;
for(i=4;i<=1000;i++){
a*=2;
if(a>mod){
a=a%mod+mod;
}
dp[i]=(a-dp[i-1])%mod;
}
int n;
while(cin>>n,n){
cout<<dp[n]<<endl;
}
return 0;
}