POJ 1950暴搜

来源:互联网 发布:js如何控制embed播放 编辑:程序博客网 时间:2024/06/06 04:32

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

用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",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

0 0
原创粉丝点击