社区讨论

使用了回溯方式,但是只有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 条回复,欢迎继续交流。

正在加载回复...