思路
如果不会搜索、队列说的就是我 ,可以模拟四进制,并枚举出答案。
#include <iostream>
#include <string>
#include <algorithm>
#include <iomanip>
using namespace std;
int num[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; //调料初始状态
int fun[1000000][10]; //答案数组
int main() {
int m, k = 0, ans = 0;
cin >> m;
while(1){
int count = 0; //调料总美味度
for(int t = 0; t < 10; t++){
count += num[t];
}
if(count == m){ //把符合要求的数组存起来。
ans++;
for(int t = 0; t < 10; t++){
fun[k][t] += num[t];
}
k++;
}
if(count == 30) break;
num[0]++;
for(int t = 0; num[t] > 3; t++){ //模拟四进制。
num[t] = 1;
num[t + 1] += 1;
}
}
cout << ans << endl;
for(int i = 0; i < k; i++) {
for (int j = 9; j >= 0; j--) {
cout << fun[i][j] << " ";
}
cout << endl;
}
return 0;
}