• NYOJ-1058 部分和问题


    部分和问题

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
    描写叙述
    给定整数a1、a2、.......an,推断能否够从中选出若干数,使它们的和恰好为K。
    输入
    首先,n和k,n表示数的个数,k表示数的和。
    接着一行n个数。
    (1<=n<=20,保证不超int范围)
    输出
    假设和恰好能够为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”
    例子输入
    4 13
    1 2 4 7
    例子输出
    YES
    2 4 7




    01.#include<iostream>
    02.#include<cstring>
    03.#include<cstdio>
    04.using namespace std;
    05.int n,k,v,sum,a[25],b[25];
    06.void dfs(int p)
    07.{
    08.if(sum>=k)
    09.{
    10.if(sum==k)
    11.{
    12.if(!v)
    13.{
    14.v=1;
    15.cout<<"YES"<<endl;
    16.}
    17.for(int i=0;i<n;i++)        
    18.if(b[i])
    19.cout<<a[i]<<" ";
    20.cout<<endl;
    21.}
    22.return;
    23.}
    24.for(int i=p;i<n;i++)
    25.{
    26.sum+=a[i];
    27.b[i]=1;
    28.dfs(i+1);
    29.sum-=a[i];
    30.b[i]=0;
    31.}
    32.}
    33.int main()
    34.{
    35.while(scanf("%d%d",&n,&k)==2)
    36.{
    37.v=0;
    38.memset(b,0,sizeof(b));
    39.for(int i=0;i<n;i++)
    40.cin>>a[i];       
    41.sum=0;
    42.dfs(0);
    43.if(!v) 
    44.cout<<"NO"<<endl;
    45.}
    46.return 0;
    47.}

  • 相关阅读:
    python 文件 笔记
    python 模块、包 笔记
    类、对象
    python 函数 笔记
    测试价值体现
    断舍离-笔记2
    Happy 2006 POJ
    Triangle War POJ
    Complete the sequence! POJ
    放苹果 POJ
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4319097.html
Copyright © 2020-2023  润新知