40分求助!
  • 板块P2089 烤鸡
  • 楼主pilgrimize
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/2/1 15:31
  • 上次更新2023/11/5 04:01:05
查看原帖
40分求助!
374180
pilgrimize楼主2021/2/1 15:31

测试输入11 和12及30以上可以正常输出, 但13到30运行错误

#include <cstdio>
#include<iostream>
#include <algorithm>
#include <string>
#define maxn 3*3*3*3*3*3*3*3*3*3+10
using namespace std;
void dfs(int,int);
const int step = 10;
int ans[maxn][11];
long long sul = 0;
int main() {
	int n;
	scanf("%d", &n);
	if (n > 30) {
		printf("0"); return 0;
	}
	dfs(n, step);
	for (long long i = 0; i < sul; i++)
		for (int j = 0; j < 10; j++)
			if (!ans[i][j]) ans[i][j] = ans[i - 1][j];
	printf("%d\n", sul);
	for (long long i = 0; i < sul; i++) {
		for (int j = 0; j < 10; j++)
			printf("%d ", ans[i][j]);
		printf("\n");
	}
	return 0;
}
void dfs(int n,int left) {
	if (n <= 3 && left == 1) {  ans[sul][9]=n;sul++; return; }
	for (int i = 1; i <= min(3,n-left+1); i++) {
		ans[sul][step - left] = i;
		dfs(n - i, left - 1);
	}
}
********
2021/2/1 15:31
加载中...