社区讨论
使用了回溯方式,但是只有30分…
P2089烤鸡参与者 6已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mi4f1199
- 此快照首次捕获于
- 2025/11/18 18:13 4 个月前
- 此快照最后确认于
- 2025/11/18 18:13 4 个月前
提交了题解里面的循环解法,却是AC,希望有人看到可以看看我的代码哪里有问题,十分感谢。
CPP#include "stdio.h"
int n,flag=0;
int list[59050][11]={0};
int tlist[11]={0};
void cook(int level,int deal);
int main(int argc, char const *argv[])
{
int i,j;
scanf("%d",&n);
cook(1,0);
for (i = 1; i <= flag; ++i)
{
for (j = 1; j <= 10; ++j)
{
printf("%d",list[i][j]);
if (j<10)
{
printf(" ");
}
}
printf("\n");
}
printf("%d\n",flag);
return 0;
}
void cook(int level,int deal)
{
int i;
if (deal>n || level >11)
{
return;
}
if (deal==n && level==11)
{
flag++;
for (i = 1; i <= 10; ++i)
{
list[flag][i]=tlist[i];
}
return;
}
for (i = 1; i <=3 ; ++i)
{
tlist[level]=i;
cook(level+1,deal+i);
tlist[level]=0;
}
return;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...