pku 1950 Dessert(暴搜)

#include <iostream> using namespace std; #define plus 1 #define minus 2 #define point 3 int N,sum; int ans[20]; void output() { printf("1"); for(int i=2;i<=N;i++) { if(ans[i]==plus) printf(" + "); else if(ans[i]==minus) printf(" - "); else printf(" . "); printf("%d",i); } printf("/n"); } void search(int ret,int left,int index) { if(index==N+1) { ret+=left; if(ret==0) { sum++; if(sum<=20) output(); } return; } ans[index]=plus; search(ret+left,index,index+1); ans[index]=minus; search(ret+left,-index,index+1); ans[index]=point; if(index>=10) left=left*100+left/abs(left)*index; else left=left*10+left/abs(left)*index; search(ret,left,index+1); } int main() { scanf("%d",&N); sum=0; search(0,1,2); printf("%d/n",sum); return 0; }

你可能感兴趣的:(search,include,output)