• hdu 2266 dfs


    题意:在数字之间添加运算符号,使得结果等于题目中要求的
    Sample Input
    123456789 3
    21 1
    Sample Output
    18
    1

    这题虽然看起来比较简单,但是之前和差的状态不太好表示,因此就枚举断点,求每个断点之间的数是加数还是减数即可,剪枝依然是+位置状态

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 #define cl(a) memset(a,0,sizeof(a))
    13 #define ts printf("*****
    ");
    14 const int MAXN=1005;
    15 char s[15];
    16 int n,m,tt,sum=0,len;
    17 __int64 N;
    18 void dfs(int pos,__int64 ans)
    19 {
    20     if(pos==len)
    21     {
    22         if(ans==N)
    23             sum++;
    24         return;
    25     }
    26     __int64 x=0;
    27     for(int i=pos;i<len;i++)
    28     {
    29         x=x*10+s[i]-'0';
    30         dfs(i+1,ans+x);
    31         if(pos!=0)    dfs(i+1,ans-x);   //负号并不能放在第一位
    32     }
    33 }
    34 int main()
    35 {
    36     int i,j,k;
    37     #ifndef ONLINE_JUDGE
    38     freopen("1.in","r",stdin);
    39     #endif
    40     while(scanf("%s",s)!=EOF)
    41     {
    42         scanf("%I64d",&N);
    43         len=strlen(s);
    44         sum=0;
    45         dfs(0,0);
    46         printf("%d
    ",sum);
    47     }
    48 }
  • 相关阅读:
    python 继承与组合
    google浏览器安装不上的绝望经历
    python 类,对象
    Javascript学习笔记——闭包
    面试小结:html/css实现元素居中
    @清晰掉 qsort()
    @清晰掉 sprintf sscanf双胞胎
    @清晰掉 GDB调试器中的战斗机
    @大脑练习: 计算两个矩阵的乘积
    js测试用
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4455514.html
Copyright © 2020-2023  润新知