图片说明

记录一种dfs的题目
#include<iostream>
#include<iomanip>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<vector>
#include<cstring>
#include<algorithm>
#define pi acos(-1)
using namespace std;
int n,sum=0;
int a[10000][10], b[10];
void dfs(int num, int step)
{
if (step == 10)
{
if (num == n)
{
for (int i = 0; i < 10; i++)
a[sum][i] = b[i];
sum++;
}
}</algorithm></cstring></vector></stack></string></iomanip></iostream>

else
{
    for (int i = 1; i <= 3; i++)
    {
        if ((num + i) <= n) {
            b[step] = i;
            dfs(num + i, step + 1);
        }
    }
}

}
int main()
{

cin >> n;
dfs(0, 0);
cout << sum << endl;
for (int i = 0; i < sum; i++)
{
    for (int j = 0; j < 10; j++)
        cout << a[i][j] << " ";
    cout << endl;
}
return 0;

}