書式#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 ; }