羅区-P1149マッチ棒式

タイトル説明

あなたが式を綴ることができ、N形「A + B = C」の数をマッチ棒?(非ゼロの数は、次に最上位ビットが0でない場合)、式Aは、B、Cは、マッチ棒スペル有する整数です。図マッチ棒に示す0-9と綴りの戦い:

 

 

注意:

  1. 彼らのニーズと等号2本のマッチ棒プラス

  2. A≠B、その後、A + B = CとB + A = Cいるかのように異なる式(A、B、C> = 0)

  3. nはマッチ棒はすべて費やさなければなりません

入出力フォーマット

入力フォーマット:

Matches.in共通ライン入力ファイル、及び整数N(N <= 24)。

 

出力フォーマット:

総出力ファイルmatches.outライン、異なる方程式の数が綴ることができ表します。

サンプル入力と出力

入力サンプル#1:
サンプル入力1:
14
サンプル入力2:
18
出力サンプル#1:
出力例1:
2
出力例2:
9

説明

試料1 O [説明]

式2 1 = 0 + 1 + 0 = 1,1。

サンプル2 O [説明]

9式は次のとおりです。

0+4=4
0+11=11
1+10=11
2+2=4
2+7=9
4+0=4
7+2=9
10+1=11
11+0=11

バックトラックは、思い出すことができない高速な予備知識をバックトラック、この質問は、これを統合することができます:

 

#include <アルゴリズム> 
の#include <iostreamの> 
する#include <cstdioを>
 の#define N 1100
 使用して 名前空間STDを、

int型 [N] = { 6255456376 }。
int型 B [ 4 ]。
int型のn;
int型でも= 0 ;

ボイド dfind(INT POS){
     ためintは iは= 0 ; I <= N- 1、I ++ ){
         場合(N - [I]> = 0 ){
            N = N - 〔I〕。
            B [POS] = iは、
            もし(POS == 3 ){
                 場合(B [ 1 ] + B [ 2 ] == B [ 3 ] && N == 0 ){++ ;
                }
            } {
                dfind(POS + 1 )。
            }
            N + = [I]。
        }
    }
}


int型(主ボイド){
    cinを >> N;
    N = N - 4 以下のためにINT iは= 10、I <= N- 1、I ++ ){
        [I] = [I / 10 ] + [I%10 ]。
    }
    Dfind(1 )。
    coutの << TOT << てendl;
}

 

 

 

おすすめ

転載: www.cnblogs.com/doubest/p/11852886.html