全RE求助

P1464 Function

话说我大概明白了,先试试
by Starlit_Night @ 2020-03-16 22:09:56


我加上了 ```cpp if(a>20) a=20; if(b>20) b=20; if(c>20) c=20; ``` 之后,全部WA,求解
by Starlit_Night @ 2020-03-16 22:12:01


![](https://cdn.luogu.com.cn/upload/image_hosting/r1ykvfcv.png)
by Starlit_Night @ 2020-03-16 22:13:23


加上那三行之后的代码是: ```cpp #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> #include <queue> //#include <bits/stdc++.h> #define MAXN 210000000 #define MINN -210000000 using namespace std; typedef long long ll; ll dp[22][22][22]; ll w(ll a,ll b,ll c) { if(a<=0||b<=0||c<=0) return 1; else if(dp[a][b][c]!=0) return dp[a][b][c]; else if(a>20||b>20||c>20) { return dp[a][b][c]=w(20,20,20); } else if(a<b&&b<c) { return dp[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)+w(a,b-1,c); } else { return dp[a][b][c]=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } return dp[a][b][c]; } int main() { ll a,b,c; while(cin>>a>>b>>c) { memset(dp,0,sizeof(dp)); if(a==-1&&b==-1&&c==-1) break; if(a>20) a=20; if(b>20) b=20; if(c>20) c=20; printf("w(%lld, %lld, %lld) = ",a,b,c); cout<<w(a,b,c)<<endl; } return 0; } ```
by Starlit_Night @ 2020-03-16 22:14:07


你在main函数中就已经把 a,b,c赋值为20了,那么 在运行递归函数中 如何让你的函数 判断这个是>20 >20 >20 的呢??
by Malixin1234 @ 2020-03-28 20:57:22


|