```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