记录一种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;
}