其他分享
首页 > 其他分享> > dfs进化史

dfs进化史

作者:互联网

一:简单题

 

P2089 烤鸡 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

一个简单的dfs,虽然很裸但是对我(菜鸡)还是有难度。。需要注意的是要求先输出个数再输出方案数,所以我们用个二维数组把存起来,再for循环输出。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int n,a[15],b[100010][15];
 5 int ans;
 6 
 7 void dfs(int u,int sum)
 8 {
 9     if(u>10)
10     {
11         if(sum==n)
12         {
13             ans++;
14             for(int i=1;i<=10;i++)b[ans][i]=a[i];
15         }
16         return ;
17     }
18     
19     for(int i=1;i<=3;i++)
20     {
21         if(sum+i>n)break;
22         a[u]=i;
23         dfs(u+1,sum+i);
24         a[u]=0;
25     }
26 }
27 
28 int main()
29 {
30 
31     scanf("%d",&n);
32     if(n>30||n<10)printf("0\n");
33     else
34     {
35         dfs(1,0);
36         printf("%d\n",ans);
37         for(int i=1;i<=ans;i++)
38         {
39             for(int j=1;j<=10;j++)printf("%d ",b[i][j]);
40             printf("\n");
41         }    
42             
43     }
44     
45     return 0;
46 } 
1

 

标签:进化史,int,sum,30,dfs,ans,15
来源: https://www.cnblogs.com/wellerency/p/15863348.html