求助

灌水区

```cpp #include<iostream> using namespace std; long long a[75]={0,1,2,4}; int main(){ int k; for(int i=4;i<=75;++i) a[i]=a[i-1]+a[i-2]+a[i-3]; while(cin>>k){ if(k==0) break; else cout<<a[k]<<endl; } return 0; } ``` 对了可以关注吗
by nini0913 @ 2024-03-19 22:04:27


```c #include <iostream> using namespace std; int countWays(int n) { int dp[n+1]; dp[0] = 1; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= n; i++) { dp[i] = dp[i-1] + dp[i-2] + dp[i-3]; } return dp[n]; } int main() { int n; while(1){ cin >> n; int ways = countWays(n); if ( ways != 0 ) cout << ways << endl; } return 0; } ```
by lzh009 @ 2024-03-19 22:05:35


@[lzh009](/user/952814) ```c #include <iostream> using namespace std; int countWays(int n) { int dp[n+1]; dp[0] = 1; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= n; i++) { dp[i] = dp[i-1] + dp[i-2] + dp[i-3]; } return dp[n]; } int main() { int n; while(cin >> n){ int ways = countWays(n); if ( ways != 0 ) cout << ways << endl; } return 0; } ```
by lzh009 @ 2024-03-19 22:06:18


@[zjz13629775503](/user/1126827) ```c #include<bits/stdc++.h> using namespace std; int n; long long a[77]={0,1,2,4}; long long js(int n){ if(a[n]>0)return a[n]; return a[n]=js(n-1)+js(n-2)+js(n-3); return a[n]; } int main(){ cin>>n; cout<<js(n); return 0; } ```
by Fubaogege @ 2024-03-19 22:07:08


规律: ~~(应该是吧)~~ $$ f(n)=f(n-1)+f(n-2)+f(n-3) $$ 临界条件: $$f(1)=1,f(2)=2,f(3)=4 $$ (如有谬误欢迎指正)
by Ravener @ 2024-03-19 22:08:06


@lzh009@nini0913 @[Fubaogege](/user/759940) 谢谢几位大佬
by my_name_qunge @ 2024-03-19 22:09:33


@[zjz13629775503](/user/1126827) ~~(我怎么又双叒叕忘记@楼主了)~~
by Ravener @ 2024-03-19 22:09:46


额,dp怎么有人做那么快 ~~~~
by lzh009 @ 2024-03-19 22:09:55


我一般喜欢为帮助我的人关注
by my_name_qunge @ 2024-03-19 22:14:09


|