小知識(模板)
阿新 • • 發佈:2018-12-09
組合數 C(n, m) = C(n -1, m - 1) + C(n - 1, m)
#include <bits/stdc++.h> using namespace std; int C[35][35]; int main() { C[1][0] = C[1][1] = 1; for (int i = 2; i < 35; i++) { C[i][0] = 1; for (int j = 1; j <= i; j++) C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]); } int n, m; while(scanf("%d%d", &n, &m)!=EOF) { printf("%d\n", C[n][m]); } return 0; }
錯排 f(n)=(n-1)*(f(n-1)+f(n-2))
#include <bits/stdc++.h> using namespace std; //long long d=0; //遞推 //long long f(int n) //{ // if(n==1) // return 0; // else if(n==2) // return 1; // else // d=(n-1)*(f(n-1)+f(n-2)); // return(d); //} //int main() //{ // int n; // while(scanf("%d",&n)!=EOF) // cout << f(n) << endl; //} int main() { long long a[30]; int i,n; a[1]=0; a[2]=1; for(i=3;i<30;i++) a[i]=(i-1)*(a[i-1]+a[i-2]); //打表 while(scanf("%d",&n)!=EOF) printf("%lld\n",a[n]); return 0; }