ブルーブリッジカップALGO-115アルゴリズムとTのためのトレーニング

そして、トレーニングのためのアルゴリズムT  

制限時間:メモリ制限が1.0S:256.0メガバイト

 

問題の説明

  Nは整数である選択フォーカスのいくつかの要素の一つ大きさから、そのように指定された値Tへの等しいです 各要素の制限選挙はかつて、A選択されていないではありません。

 

入力形式

  正の整数nの最初の行、整数の集合内の要素の数。
  スペースで分離された第2ラインnは整数、。
  整数Tの3行目は、とを達成することを約束します。

 

出力フォーマット

  入力の順に配置された出力線の数、溶液の各出力セット、すなわち、選択された数があります。
  溶液の複数設定した場合、優先出力は、N個の整数を含まない;含有又は含有しない場合、優先的に等最初の出力N-1の整数を含み、ありません。
  プログラム出力の合計数の最後の行。

 

サンプル入力

5
-7 -3 -2 5 9
0

 

サンプル出力

-3 -2 5
-7 -2 9
2

 

スケールデータと規則

1 <= N - <= 22ではありません
Tは<= maxlongintが
  長い範囲を超えない任意の要素を設定して

 

#include <stdio.h>

int n;
long long int a[25];
long long int T;
long long int current_sum;
long long int chosen[25];
int size_chosen;
long long int num_solutions;

void search(int idx)
{
    if (idx < 0)
    {
        if (current_sum == T && size_chosen)
        {
            num_solutions++;
            for (int i = size_chosen - 1; i >= 0; --i)
                printf("%lld ", chosen[i]);
            printf("\n");
        }
        return;
    }

    search(idx - 1);
    current_sum += a[idx];
    chosen[size_chosen++] = a[idx];
    search(idx - 1);
    size_chosen--;
    current_sum -= a[idx];
}

int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
        scanf("%lld", &a[i]);
    scanf("%lld", &T);

    current_sum = 0;
    size_chosen = 0;
    num_solutions = 0;
    search(n-1);
    printf("%lld", num_solutions);

    return 0;
}

 

公開された221元の記事 ウォン称賛40 ビュー40000 +

おすすめ

転載: blog.csdn.net/liulizhi1996/article/details/104009060