题解
【基础】递归函数
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; long long ans[25][25][25]; bool p[25][25][25]; long long cjf(long long a,long long b,long long c){ if(a<=0||b<=0||c<=0) { return 1; } if(a>20||b>20||c>20){ return cjf(20,20,20); } if(p[a][b][c]){ return ans[a][b][c]; } if(a<b&&b<c) { ans[a][b][c]=cjf(a,b,c-1)+cjf(a,b-1,c-1)-cjf(a,b-1,c); }else{ ans[a][b][c]=cjf(a-1,b,c)+cjf(a-1,b-1,c)+cjf(a-1,b,c-1)-cjf(a-1,b-1,c-1); } p[a][b][c]=1; return ans[a][b][c]; } int main(){ // int n,m; // cin>>n>>m; // if(n==1||n==15||m==1||m==15){ // cout<<"black"; // }else if(n==2||n==14||m==2||m==14){ // cout<<"white"; // }else if(n==3||n==13||m==3||m==13) long long q,w,e; memset(p,false,sizeof(p)); cin>>q>>w>>e; cout<<cjf(q,w,e)<<endl; return 0; }
- 1