训练第四天

1:寻找满足ABC+DEF=GHI的情况有多少

比如173+286=459

看到这个题,我想大部分新手第一反应就是暴力循环,把所有可能的数字情况1到9全部枚举一遍,满足情况就输出,嗯,九重循环O(n^9)直接暴力深搜;

#include<stdio.h>

int outHand[10] = { 0 };

int list[10] = { 0 };

int total = 0;

void DFS(int step)

{

    if (step == 10)   //结束条件1,把9个数全填进去了

    {

        if (list[1] * 100 + list[2] * 10 + list[3]     //结束条件2,满足等式

            + list[4] * 100 + list[5] * 10 + list[6]

            == list[7]*100 + list[8]*10 + list[9])

        {

            total++;

        }

        return;  

        

    }

    for (int i = 1;i <= 9;i++)  //尝试每一种可能

    {

        if (outHand[i] == 0)

        {

            list[step] = i;    //将这种情况放到容器中

            outHand[i] = 1//标记

            DFS(step + 1);  //开始填下一个空

            outHand[i] = 0;//再拿出来

        }

    }

    return;

}


int main()

{

    DFS(1);

    printf("%d\n",total/2);//234+124=358和124+234=358是一种方法,所以要除以2;

    return 0;

    

}

2:有n个 数b 1, b2, ..., bn; a 1, a2, ..., an是通过等式ai = bi - bi + 1 + bi + 2 - bi + 3....(±)bn得到的

现给你a1, a2, ..., an这n个数,问b1, b2, ..., bn是多少?

思路:水题,找规律嘛;

#include <stdio.h>

int main()

{

    int a,b,n;

    while(scanf("%d",&n)!=0)

    {

        for(int i=1;i<=n;i++)

        {

            scanf("%d",&a);

            if(i>1)

            {

                printf("%d",a+b);

                printf(" ");

                b=a;

            }

        }

        printf("%d",a);

        printf("\n");

    }

    return 0;


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值