problem14 最长链

来源:互联网 发布:用友软件温州总代理 编辑:程序博客网 时间:2024/05/18 14:27
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const long long MAXN = 1000000;long long dp[MAXN + 10];long long SumChain(long long n){long long sum = 0;//cout<<endl;while(n != 1){//cout<<n<<" ";if(n <= MAXN && dp[n] != -1){sum += dp[n];return sum;}sum++;if((n & 1) == 1){n = 3 * n + 1;}else{n = n /2;}}//cout<<endl;sum++;return sum;}int main(){long long MAX = 0;long long ans;long long flag;long long i;memset(dp,255,sizeof(dp));for(i = 1; i <= 1000000; i++){//cout<<"i: "<<i<<endl;flag = SumChain(i);dp[i] = flag;//cout<<"Length of chain: "<<flag<<endl;if(flag > MAX){MAX = flag;ans = i;}}printf("%lld\n",MAX);printf("%lld\n",ans);return 0;}