#include<stdio.h>
#define max(a,b) a>b?a:b //定义宏文件(比大小并交换)
int MAXN=100;
int main()
{
int x,i=0;
int nums[MAXN];
int dp[MAXN];
//dp存放当前情况能达到的最大的金额
while(scanf("%d",&x)!=EOF){
nums[i]=x;
i=i+1;
}
//开始递归
if(i==0) return nums[0];
//只有一个的情况
if(i==1) return max(nums[0],nums[1]);
//只有两个情况
if(i>=2){
dp[0]=nums[0];
dp[1]=max(nums[0],nums[1]);
for(int j=2;j<=i;j++){
dp[j]=max(dp[j-1],dp[j-2]+nums[j]);
//递推的状态转移公式(前一个状态最大金额与前面第二个状态最大金额与当前金额和的其中的最大值)
}
}
printf("%d",dp[i]);
}
递推的状态转移公式要得出来。
交换两数的宏文件定义。