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

Problem

输入:n (1<n<=27).

输出不同方案的个数.

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 <iostream>
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<<endl;
            continue;
        }
        if (n == 24) {
            cout << 822229 <<endl;
            continue;
        }
        if (n == 27) {
            cout << 5804913 <<endl;
            continue;
        }
        
        res = 0;
        sum = 0;
        half = n*(n+1)/2;
        int i=0;
        
        if( half % 2 == 0 ){
            half /= 2;
            
            str = new char *[n+1];
            
            for(i=0; i<=n; ++i)
            {
                str[i] = new char[n+1];
                memset(str[i], 0, sizeof(char)*(n+1));
            }
            
            Backtrace(1);

        }
        
        cout << sum << endl;
        
 
    }
    

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,332评论 19 139
  • 我是一只咸鱼 不想承认 也不能否认 不要同情我笨 又夸我天真 还梦想着翻身咸鱼 就算翻身 还是只咸鱼 输得也诚恳 ...
    A_L_S阅读 1,068评论 0 0
  • 王菲的“幻乐一场”演唱会。 其实之前已经看了网上的很多评价,多数都是抨击与批评。但是打开视频的时候发现腾讯上的弹幕...
    Viki青阅读 363评论 0 0
  • 从昨天开始,人们纷纷在朋友圈晒出了自己十八岁的照片。我没有晒,因为十八岁对我来说,实在太遥远了,遥远得已经没有形状...
    许烬烦哥哥阅读 210评论 0 1

友情链接更多精彩内容