zoukankan      html  css  js  c++  java
  • HDU-4272 LianLianKan (dfs)

    题意:多测试样例,N个元素(1 <= N <= 1000),每个元素的值为(0<= ai <= 2,000,000,000),这些元素被压入栈中,与栈顶相同的可以一起消除(每次将与top相同的相连必须距离在6以内),问最后是否能将整个栈弹出
    思路:用dfs来递归寻找可能的方案
    关于删除操作(一开始想到用list但是感觉按位置删除比较麻烦所以用vis[]数组模拟)
    (优化):如果n为奇数也消除不完(没有匹配的),如果某个数的个数为奇数,那么这个栈绝对弹不完,所以这样就可以提前预判一些 。(我们可以用map来统计每个数的个数)

    完整代码:

    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    int vis[1001],a[1001];
    
    int dfs(int n)
    {
        int i=0,j=n-1;
        while(n>=0&&vis[n]) --n;
        if(n==-1) return 1;
        if(n==0&&!vis[0]) return 0;
        while(i<=5)
        {
            if(j<0) return 0;
            if(vis[j]) --j;
            if(a[n]==a[j])
            {
                vis[j]=1;
                if(dfs(n-1)) return 1;
                vis[j]=0;
            }
            ++i;
            --j;
        } 
        return 0;
    }
    
    int main()
    {
        int k,m,q,t,p,n;
        int T;
        map<int,int> mp;
        map<int,int>::iterator it;
        
        while(cin>>n)
        {
            
            t=0;
            for(int i=0;i<n;++i)
            {
                scanf("%d",&a[i]);
                vis[i]=0;
                mp[a[i]]++;
            }
            if(n&1) {
                cout<<0<<endl;
                continue; 
            }
            
            for(it=mp.begin();it!=mp.end();++it)
            {
                if((*it).second%2)
                {
                    t=1;
                    break;
                }
            }
            
            if(t)
            {
                cout<<0<<endl;
            }else
            {
                cout<<dfs(n-1)<<endl;
            }
    
        }
        return 0;
    }
  • 相关阅读:
    将1、2、3..10...变成01、02、03...10...
    idea启动项目时报错
    八锁现象
    友联
    通达OA 任意文件删除结合文件上传导致RCE漏洞复现
    Linux提权
    vulnhub靶机DC2记录
    ThinkPHP5.x 任意代码执行漏洞复现
    SaltStack远程命令执行漏洞复现(CVE-2020-11651、CVE-2020-11652)
    vulnhub靶机DC1记录
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11225162.html
Copyright © 2011-2022 走看看