zoukankan      html  css  js  c++  java
  • nyoj 1058部分和问题

    部分和问题

    时间限制:1000 ms  |  内存限制:65535 KB

    难度:2

    描述

    给定整数a1a2.......an,判断是否可以从中选出若干数,使它们的和恰好为K

    输入

    首先,n和k,n表示数的个数,k表示数的和。
    接着一行n个数。
    1<=n<=20,保证不超int范围)

    输出

    如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”

    样例输入

    4 13

    1 2 4 7

    样例输出

    YES

    2 4 7

    #include <stdio.h>
    int n, k, ok, arr[22], vis[22], count;
     
    void DFS(int pos){
        if(count >= k)
    	{
            if(count == k)
    		{
                if(!ok){
                    ok = 1; printf("YES
    ");
                }
                for(int i = 0; i < n; ++i)
                    if(vis[i]) printf("%d ", arr[i]);
                printf("
    ");
            }
            return;
        }
         
        for(int i = pos; i < n; ++i){
            count += arr[i];
            vis[i] = 1;
            DFS(i + 1);
            count -= arr[i];
            vis[i] = 0;
        }
    }
     
    int main(){
        while(scanf("%d%d", &n, &k) == 2){
            ok = 0;
            for(int i = 0; i < n; ++i){
                scanf("%d", arr + i);
                vis[i] = 0;
            }
            count = 0; DFS(0);
            if(!ok) printf("NO
    ");
        }
        return 0;
    }        
    

      

  • 相关阅读:
    UVa 541 Error Correction
    UVa 11045 My T-shirt suits me
    【模板】Ford-Fulkerson算法
    POJ 1273 Drainage Ditches
    UVa 10158 War
    UVa 658 It's not a Bug, it's a Feature!
    【模板】并查集
    【模板】Floyd-Warshall算法
    UVa 10034 Freckles
    UVa 10048 Audiophobia
  • 原文地址:https://www.cnblogs.com/zhangliu/p/7052591.html
Copyright © 2011-2022 走看看