P2089 烤鸡
题目:
这道题目有几亿个坑来具体说一下:
1.熟悉的边界问题
2.需要输出printf
3.还需要一个a数组来记录p数组会被刷掉的数
4.在k>10或者c>m时都要return
程序:
1 #include2 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< 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 }