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

京公网安备 11010502036488号