#include <stdio.h>
#define n 7
int sum;
int count;
int array[n+1][n+1];
int half;
void traceback(int t)
{
if(t > n)
sum++;
if( (count > half) || ( t * (t-1) / 2 - count > half))
return;
else {
for (int i = 0; i < 2; i++) {
array[1][t] = i;
count = count + i;
for (int j = 2; j <= t; j++) {
array[j][t-j+1] = array[j-1][t-j+1] ^ array[j-1][t-j+2]; // 1^0 = 1 1^1 = 0
count += array[j][t-j+1];
}
traceback(t+1);
for (int j = 2; j <= t; j++)
count += array[j][t-j+1];
count-=i;
}
}
}
int main() {
half=(n+1)*n/2;
if(half%2==1) {
printf("%d", 0);
return 0;
}
traceback(1);
printf("%d\n",sum);
return 0;
}
符号三角形
最新推荐文章于 2024-02-06 22:12:20 发布