#include <iostream> using namespace std; // 实际上可以等效为组合问题:从[0,m]中选择3个值,使和为m // 由于可以重复,因此下一层的start可以等于本层的i int ways=0; void traceback(int m,int n,int sum,int start){ if(n==0){ if(sum==m) ++ways; return; } for(int i=start;i<=m-sum;++i){ sum+=i; ...