zoukankan      html  css  js  c++  java
  • HDU 4403 A very hard Aoshu problem(dfs爆搜)

    http://acm.hdu.edu.cn/showproblem.php?pid=4403

    题意:

    给出一串数字,在里面添加一个等号和多个+号,使得等式成立,问有多少种不同的式子。

    思路:

    数据量比较小,直接dfs爆搜答案即可。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<map>
     6 using namespace std;
     7 
     8 char s[20];
     9 int a[2][100], tot[2], ans;
    10 map<int,int> f;
    11 
    12 void dfs(int cur, int pre, int sum, int ends, int id)
    13 {
    14     if(cur == ends)
    15     {
    16         if(pre)  return;
    17         if(!id)  f[sum]++;
    18         else if(f[sum])  ans+=f[sum];
    19         return;
    20     }
    21     dfs(cur+1,0,sum+pre*10+s[cur]-'0',ends,id);
    22     dfs(cur+1,pre*10+s[cur]-'0',sum,ends,id);
    23 }
    24 
    25 int main()
    26 {
    27     //freopen("in.txt","r",stdin);
    28     while(~scanf("%s",s) && s[0]!='E')
    29     {
    30         ans = 0;
    31         int n = strlen(s);
    32         for(int i=1;i<n;i++)
    33         {
    34             f.clear();
    35             dfs(0,0,0,i,0);
    36             dfs(i,0,0,n,1);
    37         }
    38         printf("%d
    ",ans);
    39     }
    40 }
  • 相关阅读:
    Java 线程池学习
    Java线程:新特征-线程池
    创建Java线程池
    JAVA-线程安全性
    java线程安全总结
    栈和队列
    历年题目
    蓝桥杯算法训练
    hdu2083 暴力水
    poj 2299
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/7966464.html
Copyright © 2011-2022 走看看