zoukankan      html  css  js  c++  java
  • poj 1950 Dessert(dfs)

    *题意:

          在1到n之间添加‘+’,‘-’,‘.’三种运算符令最后结果为0,输出前20种添加方法,若不足20种则全       输出,最后输出共有多少种添加方式。(‘.’表示将其两侧的数连成一个数例:1.2.3是123)
    *思路:dfs,枚举各种情况,找出合适的。
    *代码:
    #include<iostream>
    #include<cstdio>
    using namespace std;
    char symbol[16];
    int num,n;
    void print()
    {
        int i;
        for(i=1;i
            printf("%d %c ",i,symbol[i]);
        printf("%d
    ",i);
    }
    void dfs(int sum,int deep,int pre)
    {
        if(deep==n)
            {
                if(sum==0)
                {   num++;
                    if(num<=20)print();
                }
            }
        else
            {
                int next;
                symbol[deep]='+';
                next=deep+1;
                dfs(sum+next,deep+1,next);
                
                symbol[deep]='-';
                next=deep+1;
                dfs(sum-next,deep+1,next);
    
                symbol[deep]='.';
                if(deep<9)
                    next=pre*10+deep+1;
                else
                    next=pre*100+deep+1;
                int i=deep-1;
                while(symbol[i]=='.'&&i>=0)i--;
                if(symbol[i]=='+')
                    dfs(sum+next-pre,deep+1,next);
                if(symbol[i]=='-')
                    dfs(sum-next+pre,deep+1,next);
            }
    }
    int main()
    {
        cin>>n;
        num=0;
        symbol[0]='+';
        dfs(1,1,1);
        printf("%d
    ",num);
        return 0;
    }
    

    刚做搜索找的别人的代码,注意对‘.’的处理,其他还是挺简单的。  

  • 相关阅读:
    2-jenkins持续集成体系介绍
    第六天打卡
    第五天打卡(find用法)
    第五天打卡
    第四天打卡
    第三天打卡
    第一天:定个小目标,学习REDHAT,希望能去考下RHCE
    day12
    Python3的List操作和方法
    Python3字符串的操作
  • 原文地址:https://www.cnblogs.com/Neptunes/p/3278387.html
Copyright © 2011-2022 走看看