2 条题解
-
0
dfs版:
#include<bits/stdc++.h> using namespace std; typedef __int128 int128; int128 f[50][50]; int128 dfs(int n,int k) { if(k==1||n==k)return 1; if(f[n][k]!=0)return f[n][k]; return f[n][k]=dfs(n-1,k-1)+k*dfs(n-1,k); } template<typename T>void qw(T x) { if(x>9)qw(x/10); putchar(x%10+48); } int main() { int n,k;scanf("%d%d",&n,&k); memset(f,0,sizeof(f)); qw(dfs(n,k)); return 0; }常规版:
#include<bits/stdc++.h> using namespace std; const int N = 55; __int128 f[N][N]; template<typename T>void qw(T x) { if(x/10)qw(x/10); putchar(x%10+48); } int main() { int n, m;scanf("%d%d",&n,&m); f[0][0]=1; for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) f[i][j]=f[i-1][j-1]+j*f[i-1][j]; qw(f[n][m]); return 0; } -
0
dfs版:
#include<bits/stdc++.h> using namespace std; typedef __int128 int128; int128 f[50][50]; int128 dfs(int n,int k) { if(k==1||n==k)return 1; if(f[n][k]!=0)return f[n][k]; return f[n][k]=dfs(n-1,k-1)+k*dfs(n-1,k); } template<typename T>void qw(T x) { if(x>9)qw(x/10); putchar(x%10+48); } int main() { int n,k;scanf("%d%d",&n,&k); memset(f,0,sizeof(f)); qw(dfs(n,k)); return 0; }常规版:
#include<bits/stdc++.h> using namespace std; const int N = 55; __int128 f[N][N]; template<typename T>void qw(T x) { if(x/10)qw(x/10); putchar(x%10+48); } int main() { int n, m;scanf("%d%d",&n,&m); f[0][0]=1; for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) f[i][j]=f[i-1][j-1]+j*f[i-1][j]; qw(f[n][m]); return 0; }
- 1
信息
- ID
- 448
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 94
- 已通过
- 21
- 上传者