题目描述
算法描述:
首先想用动态规划的方式生成杨辉三角形。然后暴力搜索杨辉三角形数组的行和列。
输入描述
单组输入,输入一个整数 N(1 ≤ N ≤ 100000000)。
输出描述
输出一个整数代表答案
样例输入
Copy to Clipboard
6
样例输出
Copy to Clipboard
13
代码如下
#include <iostream>
using namespace std;
#define N 1100
long long dp[N][N];
long long n;
int main()
{
while(cin>>n){
//首先先生成杨辉三角型。
for(int i = 1;i<1000;i++){
for(int j=1;j<i;j++){
if(1==j||j==i){
dp[i][j]=1;
}else{
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];//肩上的数字之和
}
}
}
//在生成的杨辉三角中遍历
int loc = 0;
int Flag = 0;
for(int i = 1;i<1000;i++){
for(int j=1;j<i;j++){
loc++;
if(dp[i][j]==n){
Flag = 1;
break;
}
}
if(Flag==1)
{
break;
}
}
cout<<loc<<endl;
}
}