洛谷数的计算
题目链接:https://www.luogu.com.cn/problem/P1028
刚开始没读懂题目,后来明白了。
首先来模拟一下1到6的情况
并且对于每种情况,我们用数组a来保存
a[1]=1
a[2]=2=a[1]+1;
a[3]=2=a[1]+1;
a[4]=4=a[1]+a[2]+1;
a[5]=4=a[1]+a[2]+1;
a[6]=6=a[1]+a[2]+a[3]+1;
也就是这样;
所以,我们可以采用双重循环嵌套的方式来计算a[n】,即对前面小于下标/2的数组进行累加,在算完后对数组加上他本身那个数就可以了
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int a[1010]; 5 int main() 6 { 7 ios::sync_with_stdio(false); 8 cin>>n; 9 a[1]=1;//初值为1 10 for(register int i=2;i<=n;i++) 11 { 12 for(register int j=1;j<=i/2;j++) 13 { 14 a[i]+=a[j];//累加过程 15 } 16 a[i]++;//算上本身 17 } 18 cout<<a[n]<<endl; 19 return 0; 20 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16046587.html