P2089 烤鸡

题目:

 

 这道题目有几亿个坑来具体说一下:

1.熟悉的边界问题

2.需要输出printf

3.还需要一个a数组来记录p数组会被刷掉的数

4.在k>10或者c>m时都要return

程序:

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e6+10;
 4 int flag=0,p[N][11]={0},a[N]={0},m=0,ans=0;
 5 void dfs(int k,int c)
 6 {
 7      if(k>10||c>m)
 8      {
 9          if(c==m)
10         {
11              flag=1;
12              ans++;
13              for(int i=1;i<=10;i++)
14             {
15                  p[ans][i]=a[i];
16             }
17         }
18          return;
19      }
20      else
21      {
22          for(int j=1;j<=3;j++) 
23          { 
24                  a[k]=j;
25                  dfs(k+1,c+j);
26          }
27      }
28 }
29 int main()
30 {
31     cin>>m;
32     dfs(1,0);
33     if(flag==0)
34     {
35         cout<<"0"<<endl;
36         return 0;
37     }
38     cout<<ans<<endl;
39     for(int i=1;i<=ans;i++)
40     {
41         for(int j=1;j<=10;j++)
42         {
43             printf("%d ",p[i][j]);
44         }
45         cout<<endl;
46     }
47     return 0;
48 }
复制代码

 

posted @   王浩泽  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示