符号三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1899 Accepted Submission(s):
977
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std; //1表示-,0表示+
long long num[25]={0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229};
int a[30][30],n,counts;
void pd();
void dfs(int id)
{
if(id==n+1) {pd();return;}
for(int i=0;i<=1;i++)
a[1][id]=i,dfs(id+1);
}
void pd()
{
int i,j,k=1,sumn=n*(n+1)/4,temp,one=0,two=0,sumn2,q=n+1;
int digit[2]={0,0};
for(i=1;i<=n;i++) digit[a[1][i]]++;
for(i=2;i<=n;i++){
for(j=1;j<=n+1-i;j++){
a[i][j]=(a[i-1][j]^a[i-1][j+1]);
digit[a[i][j]]++;
}
//if(digit[0]>sumn||digit[1]>sumn) return;
}
if(digit[0]==digit[1]) counts++;
}
int main()
{
for(n=1;n<=24;n++) {if(n==15||n==16||n==19||n==20) continue;counts=0;dfs(1);cout<<counts<<",";}
int m,i,j,k,n;
return 0;
}