11月25日学习总结

11月25日学习总结,第1张

11月25日学习总结
  1. 今天开始学习dfs(常见的组合,常见的几位数和以及走迷宫
  2. 今天做了结构体,知道了怎么同时满足俩个条件的判断
  3. 学长说了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);

}
几种不同的放法呢? 拓展(全排列)
#include
int 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);
}
  • 这根钢管一定要是仓库中最长的;
  • 这根钢管一定要是最长的钢管中最细的;
  • 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近
  • 关键语句
  • #include
    int main()
    {
     int N, m, i, j, k, a, b, c, r, s, t;
     scanf("%d", &N);
     for (i = 0; is) || (a == r&&b == s&&c 

    今天不想写了,就投一下懒吧,上面程序都是自己默写(理解)然后重新打出来的,非常感谢其他博主

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存