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

    http://acm.nyist.net/JudgeOnline/problem.php?pid=1058

    很简单的一道题,但是很久没有ac出来,看了别人的一下代码,发现就差一个变量的事儿,真是天壤之别啊。

    程序17行 :原先 i 是从0开始的,提交后超时,变为从cur开始,顿时奇迹出现了。真是坑啊!!!

    上代码:

     1 #include <stdio.h>
     2 int n,k;
     3 int a[25],flag[25];
     4 int sum;
     5 
     6 int DFS(int cur){///返回0 cur位置不可选 返回1 已找到答案
     7     if(sum > k)
     8         return 0;
     9     if(sum == k){
    10         printf("YES
    ");
    11         for(int j = 0; j < n; j++)
    12             if(flag[j] == 1)
    13                 printf("%d ",a[j]);
    14         printf("
    ");
    15         return 1;
    16     }
    17     for(int i = cur; i < n; i++){
    18         if(flag[i] == 0){
    19             flag[i] = 1;
    20             sum += a[i];
    21             int ok = DFS(i);
    22             if(ok == 0){
    23                 flag[i] = 0;
    24                 sum -= a[i];
    25             }
    26             if(ok == 1)
    27                 return 1;
    28         }
    29     }
    30     return 0;
    31 }
    32 
    33 int main(void){
    34     while(scanf("%d%d",&n,&k) != EOF){
    35         sum = 0; 
    36         for(int i = 0; i < n; i++){
    37             scanf("%d",&a[i]);
    38             flag[i] = 0;
    39         }
    40         if(!DFS(0))
    41             printf("NO
    ");
    42     }
    43 
    44 }
  • 相关阅读:
    【leetcode】1030. Matrix Cells in Distance Order
    【leetcode】1031. Maximum Sum of Two Non-Overlapping Subarrays
    【leetcode】1032. Stream of Characters
    L120 单词造句
    L119
    L118
    2018.8.6邮件规范一
    L117
    L116
    L115
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5574521.html
Copyright © 2011-2022 走看看