用动态规划的思路去做,一个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;
}