poj 1950 Desser dfs

来源:互联网 发布:html5仿淘宝手机商城 编辑:程序博客网 时间:2024/05/22 13:03
这个题目很简单,就是一个简单的dfs。


#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char a[22];
int n,ans;

void prin()
{
    for(inti=1;i<n;i++)
    {
       printf("%d %c ",i,a[i+1]);
    }
    printf("%d\n",n);
}

void dfs(int t,int sum,int now,int tmp)
{
   if(t>n)
    {
       if(sum+now*tmp==0)
       {
          ans++;
          if(ans<=20)
          prin();
       }
       return;
    }
    a[t]='+';
   dfs(t+1,sum+now*tmp,t,1);
    a[t]='-';
   dfs(t+1,sum+now*tmp,t,-1);
    a[t]='.';
   if(t<10)
   dfs(t+1,sum,now*10+t,tmp);
    else
   dfs(t+1,sum,now*100+t,tmp);
}

int main()
{
   scanf("%d",&n);
    dfs(2,0,1,1);
   printf("%d\n",ans);
    return 0;
}

原创粉丝点击