zoukankan      html  css  js  c++  java
  • POJ 1950暴搜

    思路:
    暴力枚举好了。。每回判断一下……

    用long long会超时
    但是10^20会爆int。。。
    不过仔细想一想 超过10^9的数肯定拼不回0啊……
    猥琐用int AC了

    (当然可以打表 )

    // by SiriusRen
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    int n,s[16],cnt=0,r[16];
    void dfs(int t)
    {
        if(t==n)
        {
            int ans=0,remain=n,num=0;
            for(int i=n-1;i;i--)
            {
                if(s[i]==1)
                {
                    num=0;
                    ans+=remain;
                    remain=i;
                }
                else if(s[i]==2)
                {
                    num=0;
                    ans-=remain;
                    remain=i;
                }
                else if(s[i]==3)
                {
                    if(i<9)
                    {
                        num++;
                        remain=remain+i*r[num];
                    }
                    else
                    {
                        num+=2;
                        remain=remain+i*r[num];
                    }
                }
            }
            ans+=remain;
            if(!ans)
            {
                cnt++;
                if(cnt<=20)
                {
                    for(int i=1;i<n;i++)
                    {
                        printf("%d",i);putchar(' ');
                        if(s[i]==1)putchar('+');
                        else if(s[i]==2)putchar('-');
                        else putchar('.');
                        putchar(' '); 
                    }
                    printf("%d
    ",n);
                }
            }
            return;
        }
        s[t]=1,dfs(t+1);
        s[t]=2,dfs(t+1);
        s[t]=3,dfs(t+1);
    }
    int main(){
        scanf("%d",&n);
        r[0]=1;
        for(int i=1;i<=9;i++)r[i]=r[i-1]*10;
        for(int i=10;i<=16;i++)r[i]=r[i-1];
        dfs(1);
        cout<<cnt;
    }

    这里写图片描述

    15的数据:

    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 - 10 - 11 - 12 - 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 - 9 + 10 - 11 - 12 - 13 + 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 - 9 - 10 + 11 - 12 + 13 - 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 + 7 - 8 + 9 + 10 - 11 - 12 + 13 - 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 + 7 - 8 + 9 - 10 + 11 + 12 - 13 - 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 - 7 + 8 + 9 + 10 - 11 + 12 - 13 - 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 - 7 - 8 - 9 + 10 - 11 - 12 - 13 + 14 + 15
    1 + 2 + 3 + 4 + 5 + 6 - 7 - 8 - 9 - 10 + 11 - 12 + 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 + 6 - 7 - 8 - 9 - 10 - 11 + 12 + 13 + 14 - 15
    1 + 2 + 3 + 4 + 5 + 6 - 7 - 8 . 9 + 10 + 11 + 12 + 13 + 14 + 15
    1 + 2 + 3 + 4 + 5 + 6 . 7 - 8 . 9 - 10 - 11 + 12 - 13 + 14 + 15
    1 + 2 + 3 + 4 + 5 + 6 . 7 . 8 - 9 . 10 - 11 . 12 + 13 . 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 + 7 + 8 + 9 + 10 + 11 - 12 - 13 - 14 - 15
    1 + 2 + 3 + 4 + 5 - 6 + 7 - 8 + 9 - 10 - 11 - 12 - 13 + 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 + 7 - 8 - 9 + 10 - 11 - 12 + 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 + 7 - 8 - 9 - 10 + 11 + 12 - 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 + 7 - 8 - 9 - 10 + 11 - 12 + 13 + 14 - 15
    1 + 2 + 3 + 4 + 5 - 6 - 7 + 8 + 9 - 10 - 11 - 12 + 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 - 7 + 8 - 9 + 10 - 11 + 12 - 13 - 14 + 15
    1 + 2 + 3 + 4 + 5 - 6 - 7 + 8 - 9 + 10 - 11 - 12 + 13 + 14 - 15
    1350

  • 相关阅读:
    JavaScript(第五天)【流程控制语句】
    JavaScript(第四天)【运算符】
    JavaScript(第二天)【语法,变量】
    JavaScript(第一天)【<script>标签浅析】
    JavaScript(简介)【Javascript历史】
    [LeetCode-JAVA] Substring with Concatenation of All Words
    [LeetCode-JAVA] Reverse Nodes in k-Group
    [LeetCode-JAVA] Median of Two Sorted Arrays
    [LeetCode-JAVA] Contains Duplicate IIIMaximal Square
    [LeetCode-JAVA] Contains Duplicate III
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532339.html
Copyright © 2011-2022 走看看