• nyoj 927 The partial sum problem


    The partial sum problem

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

    难度:2

    描述

    One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choose some integers from the N integers and the sum of them is equal to K. 

    输入

    There are multiple test cases.
    Each test case contains three lines.The first line is an integer N(1≤N≤20),represents the array contains N integers. The second line contains N integers,the ith integer represents A[i](-10^8≤A[i]≤10^8).The third line contains an integer K(-10^8≤K≤10^8).

    输出

    If Tom can choose some integers from the array and their them is K,printf ”Of course,I can!”; other printf ”Sorry,I can’t!”.

    样例输入

    4

    1 2 4 7

    13

    4

    1 2 4 7

    15

    样例输出

    Of course,I can!

    Sorry,I can't!

    #include <stdio.h>
    #include <stdlib.h>
    int n, arr[22], sum, vis[22], ok, count;
    const char *sam[] = {"Sorry,I can't!
    ", "Of course,I can!
    "};
    
    int cmp(const void *a, const void *b){
      return *(int *)a - *(int *)b;
    }
    
    void DFS(int k)
    {
    	if(count == sum)
    	{
    		ok = 1; return;
    	}
    	for(int i = k; i < n; ++i)
    	{
    		if(i && arr[i] == arr[i-1] && !vis[i-1]) //cut
    		continue;
    		if(count > sum && arr[i] > 0) return; //cut	    
    		count += arr[i];
    		vis[i] = 1;
    		DFS(i + 1);
    		if(ok) return;
    		count -= arr[i]; 
    		vis[i] = 0;
    	}
    }
    
    int main()
    {
        while(scanf("%d", &n) == 1)
        {
    	    for(int i = 0; i < n; ++i)
    		{
    	      scanf("%d", arr + i);
    	      vis[i] = 0;
    	    }
    	    scanf("%d", &sum);
    	    qsort(arr, n, sizeof(int), cmp);
    	    count = ok = 0; DFS(0);
    	    printf(ok ? sam[1] : sam[0]);
       }
      return 0;
    }        
    

      

  • 相关阅读:
    Ubuntu20.04更换软件源
    使用kubeadm安装k8s1.19版本之系统基础环境配置&k8s集群初始化(二)
    k8s如何删除处于terminating状态的ns资源
    k8s如何强制删除pod&pv&pvc和ns&namespace方法
    C语言中的有符号数和无符号整形数转换
    互联网-架构演进
    结合redis使token失效
    有一种爱叫做放手
    js 读取上传的json文件内容
    使用spark-md5获取文件的MD5值
  • 原文地址:https://www.cnblogs.com/zhangliu/p/7053050.html
Copyright © 2020-2023  润新知