希望更丰富的展现?使用Markdown
```c
#include<stdio.h>
int num=0;
int n;
int r[9];
int kind[600000];
int save() {
int i;
int u=0;
int s=0;
for(i=0; i<=9; i++) {
s+=r[i];
if(r[i]==0) return 0;
}
if(s==n) {
for(i=10num; i<=10num+9; i++) kind[i]=r[u++];
num++;
return 1;
}
}
int dg(int qua,int m) {
if(qua<0) return 0;
if(qua==0) return save();
int i;
for(i=1; i<=3; i++) {
r[m]=i;
dg(qua-i,m+1);
}
}
int main() {
int i;
scanf("%d",&n);
if(n>30) {
printf("0");
return 0;
}
dg(n,0);
if(num==0) {
printf("0");
return 0;
}
printf("%d\n",num);
for(i=0; i<=10num-1; i++){
printf("%d ",kind[i]);
if((i+1)%10==0&&i!=10num-1) printf("\n");
}
return 0;
}
```
by dead_gun @ 2019-03-26 21:31:21
```c
#include<stdio.h>
int num=0;
int n;
int r[9];
int kind[600000];
int save(){
int i;
int u=0;
int s=0;
for(i=0;i<=9;i++){
s+=r[i];
if(r[i]==0) return 0;
}
if(s==n){
for(i=10*num;i<=10*num+9;i++)
kind[i]=r[u++];
num++;
return 1;
}
}
int dg(int qua,int m){
if(qua<0) return 0;
if(qua==0) return save();
int i;
for(i=1;i<=3;i++){
r[m]=i;
dg(qua-i,m+1);
}
}
int main(){
int i;
scanf("%d",&n);
if(n>30){
printf("0");
return 0;
}
dg(n,0);
if(num==0){
printf("0");
return 0;
}
printf("%d\n",num);
for(i=0;i<=10*num-1;i++){
printf("%d ",kind[i]);
if((i+1)%10==0&&i!=10*num-1) printf("\n");
}
return 0;
}
```
by 桑仓先生 @ 2019-03-26 21:45:08