洛谷数的计算

题目链接: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 }

 

posted @ 2022-03-23 20:21  江上舟摇  阅读(65)  评论(0编辑  收藏  举报