モンドリアンの夢

書式#include <iostreamの> 
の#include <CStringの> 
の#include <アルゴリズム>
 使用して 名前空間はstdを、
CONSTの INT N = 12、M = 1 << N。
長い 長いF [N] [M]。
ブール値ST [M]; 

INTメイン(ボイド){
     int型N、M。
    一方、(CIN >> N >> M、N || M){ 
       
        ためint型 iは= 0 ; iは< 1 << N; iは++ ){ 
            ST [I] = int型の CNT = 0;
            int型 J = 0 ; nはJ <; J ++ ){
                 場合(I >> J&1 ){
                     場合(CNT&1)番目[I] = 
                    CNT = 0 ; 
                    
                } 他の CNT ++ ; 
            } 
            であれば(CNT&1)番目[I] = 
        } 
        のmemset(F、0はsizeofのF)。
        F [ 0 ] [ 0 ] = 1;
         についてINT I = 1 ; I <= M; I ++ のためのINT J = 0 ; J < 1。 << N-; J ++ のためのINT K = 0 ; K < 1。 << N-; K ++ ){
                     IF( (J&K)== 0 && ST [J | K])// 突出部をkとjの突出部は、競合しないとj番目の部分の間の空間とk個の部品の偶数ある 
                        [I] [J] + fはF = [I- 1 ] [K]; 
                } 
        COUT << F [M] [ 0 ] << ENDL; 
    } 
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/programyang/p/11246102.html