用动态规划的思路去做,一个dp数组一个sum数组递推两次
#include<iostream> using namespace std; int main(){ int dp[100]; dp[0] = 1; dp[1] = 1; for(int i=2;i<100;i++){ dp[i] = dp[i-1]*i; } int sum[100]; sum[0] = 0; sum[1] = 1; for(int i=2;i<100;i++){ sum[i] = sum[i-2]+dp[i]; } int n; while(cin>>n){ if(n%2==0){//奇数n-1 偶数n cout<<sum[n-1]<<" "<<sum[n]<<endl; } else {//奇数n 偶数n-1 cout<<sum[n]<<" "<<sum[n-1]<<endl; } } return 0; }