题目1498:寻找表达式

来源:互联网 发布:苹果手机截动图软件 编辑:程序博客网 时间:2024/06/07 17:07
#include <stdio.h>  int op[20];char s[3] = {'+','-',' '};int n;void dfs(int layer,int currentSum,int lastOp,int lastSum){    lastSum *= (layer > 9 ? 100 : 10);    lastSum += layer;    if(layer == n)    {        currentSum += (lastOp) ? (-1 * lastSum) : lastSum;        if(currentSum == 0)        {            printf("1");            for(int i = 2;i <= n;i++)                printf("%c%d",s[op[i - 1]],i);            printf("\n");        }        return;    }      op[layer] = 2;    dfs(layer + 1,currentSum,lastOp,lastSum);    currentSum += (lastOp) ? (-1 * lastSum) : lastSum;    op[layer] = 0;    dfs(layer + 1,currentSum,0,0);    op[layer] = 1;    dfs(layer + 1,currentSum,1,0);}  int main(){    while(scanf("%d",&n) != EOF)    {        dfs(1,0,0,0);    }    return 0;}/**************************************************************    Problem: 1498    User: cust123    Language: C++    Result: Accepted    Time:90 ms    Memory:1020 kb****************************************************************/

0 0
原创粉丝点击