- 今天开始学习dfs(常见的组合,常见的几位数和以及走迷宫
- 今天做了结构体,知道了怎么同时满足俩个条件的判断
- 学长说了Spira 是一种螺旋,从 Spiral 演变过来的。废话不多说,蒜头君决定称如下的等腰直角三角形为 Spira:题目。
- 学长也说了这个“给定字符串长度 n n n 和子串长度 到 到 k ,接下来给出字符串,该字符串由0,1和?组成,其中?可以代替0或1(代替完不能再修改),要求判断该该字符串的长度为k的子串中0和1的数量是否相等”。(但是我没有懂)
- 评价:B+
- 总结:今天满课,可以在这种情况下,可以挤时间进行学习,已经很好了,但是还有一些问题,今天明明可以再学一点,但是将他浪费了。题目也有没有懂得,但是却没有像学长问。
- 学习成功展示
引导题:输入一个数n,输出n的全排列
可以先把这个问题形象化
如:假如有编号为1,2,3的3张扑克牌和编号为1,2,3的3个盒子。将这3张扑克牌分别放入3个盒子一共有
#include几种不同的放法呢? 拓展(全排列)int book[50],a[50],n,step; void dfs(int step) { if(step==n+1) { for(int i=1;i<=n;i++)//因为数字是1到9,所以n从1开始 printf("%d",a[i]); printf("n"); return ; } else for(int i=1;i<=n;i++) { if(book[i]==0)//如果这个箱子还没有东西,是空的 { a[step]=i;//放入 book[i]=1;//里面有东西了,我就标志一下 dfs(step+1); book[i]=0;//为下一次递归 } }return ; } main() { scanf("%d",&n); dfs(1); } #includeint a[50],book[50],n,step,total; void dfs(int step) { if(step==10) { if(a[1]*100+a[2]*10+a[3]+a[4]*100+a[5]*10+a[6]==a[7]*100+a[8]*10+a[9]) { printf("%d%d%d+%d%d%d=%d%d%dn",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]); total++; } return ; } for(int i=1;i<=9;i++) if(book[i]==0) { a[step]=i; book[i]=1; dfs(step+1); book[i]=0; } return ; } main() { dfs(1); printf("%d",total/2); }
- 这根钢管一定要是仓库中最长的;
- 这根钢管一定要是最长的钢管中最细的;
- 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近
- 关键语句
#includeint main() { int N, m, i, j, k, a, b, c, r, s, t; scanf("%d", &N); for (i = 0; i s) || (a == r&&b == s&&c 今天不想写了,就投一下懒吧,上面程序都是自己默写(理解)然后重新打出来的,非常感谢其他博主
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)