zoukankan      html  css  js  c++  java
  • hdu4403- A very hard Aoshu problem(搜索)

    枚举等号的位置,然后暴力搜索一波 这个题本身不难,但它是我第一次使用对拍程序来查找错误,值得纪念。

     1 #include<cstdio>
     2 
     3 #include<string.h>
     4 
     5 #include<map>
     6 
     7 #include<algorithm>
     8 
     9 #define inf 0x3f3f3f3f
    10 
    11 const int maxn=100;
    12 
    13 using namespace std;
    14 
    15 typedef pair<int,int> P;
    16 
    17 int len,d,b,c,ans;
    18 
    19 char a[maxn+10];
    20 
    21 map<P,int> m1,m2;
    22 
    23 int cal(int l,int r){
    24    if(l>r) return 0;
    25    int res=0;
    26    for(int i=l;i<=r;i++){
    27         res=res*10+a[i]-'0';
    28    }
    29    return res;
    30 }
    31 
    32 void dfs(int l,int r,int sum,int f,int eq){
    33     if(!f){
    34         if(l>r){
    35            m1[P(sum,eq)]++;
    36            return ;
    37         }
    38         for(int i=l;i<=r;i++){
    39             dfs(i+1,r,sum+cal(l,i),0,eq);
    40         }
    41     } else {
    42         if(l>r){
    43            m2[P(sum,eq)]++;
    44            return ;
    45         }
    46         for(int i=l;i<=r;i++){
    47                 dfs(i+1,r,sum+cal(l,i),1,eq);
    48         }
    49 
    50     }
    51 }
    52 
    53 int main()
    54 {
    55    // freopen("e://duipai//data.txt","r",stdin);
    56    // freopen("e://duipai//out1.txt","w",stdout);
    57     while(scanf("%s",a)!=EOF){
    58         if(a[0]=='E')
    59         break;
    60         len=strlen(a);
    61         ans=0;
    62         for(int i=1;i<len;i++){
    63            m1.clear();
    64            dfs(0,i-1,0,0,i);
    65            m2.clear();
    66            dfs(i,len-1,0,1,i);
    67            map<P,int>::iterator it=m1.begin();
    68                 for(;it!=m1.end();++it){
    69                 int a=m1[P((*it).first.first,(*it).first.second)];
    70                 int b=m2[P((*it).first.first,(*it).first.second)];
    71                 if(a&&b) {
    72                 ans+=(a*b);
    73                 }
    74            }
    75         }
    76         printf("%d
    ",ans);
    77     }
    78     return 0;
    79 }
  • 相关阅读:
    STM32CubeIDE+FreeRTOS软件定时器实验
    STM32CubeIDE+FreeRTOS事件实验
    STM32CubeIDE+FreeRTOS互斥量实验
    STM32CubeIDE+FreeRTOS模拟优先级反转实验
    STM32CubeIDE+FreeRTOS计数信号量实验
    STM32CubeIDE+FreeRTOS二值信号量实验
    数据库
    并发编程
    网络编程
    面向对象编程(高阶)
  • 原文地址:https://www.cnblogs.com/GeniusYang/p/5734204.html
Copyright © 2011-2022 走看看