题目链接(计数版):点击打开链接
题目大意:略。
解题思路:略。
附加题目(组合版):点击打开链接
AC 代码(计数版)
#include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; //const int maxn=2e8; int vis[110],mp[110][110]; int solve(int m,int n) { if(mp[m][n]!=0) return mp[m][n]; if(n<=1 || m<=1) return mp[m][n]=1; else if(m<=n) return mp[m][n]=1+solve(m,m-1); else return mp[m][n]=solve(m-n,n)+solve(m,n-1); } int main() { for(int i=1;i<=100;i++) { vis[i]=solve(i,i); } int n; while(~scanf("%d",&n)) { printf("%d\n",vis[n]); } return 0; }