//这属于完全错排问题
int totalWrong(int n)
{
vector<int>dp(n+1,0);
dp[1]=0;dp[2]=1;
for(int i=3;i<=n;++i)
dp[i]=(i-1)*(dp[i-1]+dp[i-2]);
return dp[n];
}
//可以看看只跟前两个变量值有关,所以可以使用两个变量来节省空间
int totalWrong(int n)
{
int a=0,b=1;
int ans=1;
for(int i=3;i<=n;++i){
ans=(i-1)*(a+b);
a=b;b=ans;
}
return (n==1)?0:ans;
}