幸运三角形

来源:互联网 发布:hit韩服数据 编辑:程序博客网 时间:2024/05/14 02:36

幸运三角形

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

        话说有这么一个图形,只有两种符号组成(‘+’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同,则下层的符号为‘+’,反之,为‘-’;如下图所示(n = 3 时的两种情况):

                                           

如果图中的两种符号个数相同,那这个三角形就是幸运三角形,如上图中的图(2).

输入
有多组测试数据(少于20组)。
每行含一个整数n(0<n<20)。
输出
输出相应的幸运三角形个数。
样例输入
34
样例输出
46
/*分类:搜索 来源:NYOJ 幸运三角形思路:We are giants.create by Lee_SD on 2017/4/20*/#include<queue>#include<iostream>#include<algorithm>#include<cmath>#include<stack>#include<string.h>#include<stdio.h>using namespace std;int n,sum=0,a[25][25];void fun(int k,int p,int q){int x,y,t,i,j;if(k==n){if(p==q)sum++;return ;}for(t=0;t<2;t++){x=p,y=q,a[0][k]=t;t?x++:y++;for(i=1,j=k-1;j>-1;i++,j--){a[i][j]=a[i-1][j]^a[i-1][j+1];a[i][j]?x++:y++;}fun(k+1,x,y);}}int main(){while(cin>>n){sum=0;if(n*(n+1)/2%2==0)fun(0,0,0);cout<<sum<<endl;}}


0 0