• hdu 4272 2012长春赛区网络赛 dfs暴力 ***


    总是T,以为要剪枝,后来发现加个map就行了

     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 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=1005;
    16 int n,m,tt;
    17 bool vis[MAXN];
    18 int a[MAXN];
    19 bool dfs(int pos)
    20 {
    21     while(vis[pos]==1&&pos>0)   pos--;
    22     if(pos==0)  return 1;
    23     if(pos==1)
    24     {
    25         return 0;
    26     }
    27     int temp=pos-1;
    28     for(int i=0;i<=5;i++)
    29     {
    30         if(temp<=0) return 0;
    31         if(vis[temp])
    32         {
    33             i--;
    34             temp--;
    35             continue;
    36         }
    37         if(a[pos]==a[temp]) //找到
    38         {
    39             vis[temp]=1;
    40             if(dfs(pos-1))  return 1;
    41             vis[temp]=0;
    42         }
    43         temp--;
    44     }
    45     return 0;
    46 }
    47 int main()
    48 {
    49     int i,j,k,ca=1;
    50     #ifndef ONLINE_JUDGE
    51     freopen("1.in","r",stdin);
    52     #endif
    53     while(scanf("%d",&n)!=EOF)
    54     {
    55         map<int,int> mp;
    56         for(i=1;i<=n;i++)
    57         {
    58             scanf("%d",a+i);
    59             mp[a[i]]++;
    60         }
    61         if(n%2)
    62         {
    63             printf("0
    ");
    64             continue;
    65         }
    66         bool f=1;
    67         map<int,int>::iterator it;
    68         for(it=mp.begin();it!=mp.end();it++)
    69         {
    70             if((it->second)%2==1)
    71             {
    72                 f=0;
    73                 break;
    74             }
    75         }
    76         if(!f)
    77         {
    78             printf("0
    ");
    79             continue;
    80         }
    81         cl(vis);
    82         printf("%d
    ",dfs(n));
    83     }
    84 }
  • 相关阅读:
    主流的Nosql数据库的对比
    CCF考试真题题解
    排序
    2017-10-03-afternoon
    POJ——T 2728 Desert King
    51Nod——T 1686 第K大区间
    POJ——T 2976 Dropping tests
    2017-10-02-afternoon
    入参是小数的String,返回小数乘以100的String
    银联支付踩过的坑
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4732562.html
Copyright © 2020-2023  润新知