URAL 1079 Maximum 递推

本题直接按照题意递推,也可以用记忆化搜索

#include
using namespace std;
int a[100000],f[100000];
int main(){
	int i,ans=1;  
    a[0]=0;  
    a[1]=1;      
    f[0]=0;  
    f[1]=1;      
    for(i=2; i<=99999; i++)  
    {  
        if(i&1)  
            a[i]=a[i/2]+a[i/2+1];  
        else  
            a[i]=a[i/2];  
        ans=max(ans,a[i]);  
        f[i]=ans;  
    }      
	while(1){
		int n;
		cin>>n;
		if(!n)break;
		cout<


你可能感兴趣的:(程序代码,算法分享,URAL,基础算法,动态规划,搜索)