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;
    }
    

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

  • 相关阅读:
    cookies
    php文件上传
    pho文件和目录操作
    php 日期和时间
    json解析网站
    only_full_group_by的注意事项
    $.extend()、$.fn和$.fn.extend()
    select样式美化(简单实用)
    toArray(),toJson(),hidden([ ]),visible([ ])
    tp5 model 中的查询范围(scope)
  • 原文地址:https://www.cnblogs.com/Neptunes/p/3278387.html
Copyright © 2011-2022 走看看