• Educational Codeforces Round 42 (Rated for Div. 2) C. Make a Square


    很裸的一个DFS,但因为细节wa了10发才过。果然我还是太弱了。。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    int a[15]={0};
    int index=0;
    int t;
    bool vis[15]={0};
    int minum=1000000;
    void dfs(int x)
    {
        int temp=1,res=0,sum=0;
        int v=0,i;
        if(x==index+1)
        {
            return;
        }
        int flag=0;
        for(i=0;i<index;i++)
        {
            if(vis[i]&&a[i]==0)//判断是否有前导零,如果有,这个零必须被删除
            {
                sum--;
            }
            else if(vis[i]&&a[i]!=0)
            {
    
                break;
            }
        }
        for(i=0;i<index;i++)
        {
            if(vis[i])
            {   flag=1;
                res=res*10+a[i];
                sum++;
            }
    
        }
        int tmp=sqrt(res);
        if(tmp*tmp==res&&flag==1&&res!=0)
        {   //printf("%d %d
    ",tmp,res);
            minum=min(minum,index-sum);
        }
        for(i=x;i<index;i++)
        {
            vis[i]=true;
            dfs(i+1);
            vis[i]=false;
        }
        dfs(x+1);
    }
    int main()
    {
        long long n;
        scanf("%I64d",&n);
        memset(vis,false,sizeof(vis));
        t=n;
        int tt=sqrt(t);
        if(tt*tt==t)
        {
            printf("0
    ");
            return 0;
        }
        while(n>0)
        {
            a[index]=n%10;
            n/=10;
            index++;
        }
        reverse(a,a+index);
        dfs(0);
        if(minum!=1000000) printf("%d
    ",minum);
        else
        {
            printf("-1
    ");
        }
        return 0;
    }
    

      

      

  • 相关阅读:
    百度语音
    前端技术
    自动化测试
    分布式锁
    缓存穿透、缓存击穿、缓存雪崩
    延迟队列
    Arthas
    MyBatis配置文件容易引发的不容易发现的问题(驼峰式命名)
    JUnit使用中遇到的问题
    使用ArrayList<E>遇到的数据重复问题
  • 原文地址:https://www.cnblogs.com/zyf3855923/p/8867205.html
Copyright © 2020-2023  润新知