[算法设计与分析]符号三角形问题 解题报告

Problem

输入:n (1

输出不同方案的个数.

test input

2
3

test output

0
4

ac code

//
//  main.cpp
//  符号三角形问题
//
//  Created by jetviper on 2017/4/9.
//  Copyright © 2017年 jetviper. All rights reserved.
//

#include 
using namespace std;

int n,half,res;

char **str;
int sum;

void Backtrace(int t)
{
    int i, j;
    
    if( t > n )sum++;

    else {
        
        for(i=0; i<2; ++i){
            res+= i;
            str[1][t] = i;
            
            for(j=2; j<=t; ++j){
                
                str[j][t-j+1] = str[j-1][t-j+1] ^ str[j-1][t-j+2];
                res += str[j][t-j+1];
            }
            
            if( (res <= half) && ( t*(t+1)/2 - res <= half) ){
                Backtrace(t+1);
            }

            for(j=2; j<=t; ++j)
            {
                res -= str[j][t-j+1];
            }
            res -= i;
        }
    }
}

int main()
{
    while (scanf("%d",&n) != EOF) {
        if (n==23) {
            cout<<431095<

你可能感兴趣的:([算法设计与分析]符号三角形问题 解题报告)