NYOJ-1058 部分和问题

Posted 赤云封天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\n");
11         for(int j = 0; j < n; j++)
12             if(flag[j] == 1)
13                 printf("%d ",a[j]);
14         printf("\n");
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\n");
42     }
43 
44 }

 

以上是关于NYOJ-1058 部分和问题的主要内容,如果未能解决你的问题,请参考以下文章

NYOJ-1058 部分和问题DFS

NYOJ-zb的生日

argparse 代码片段只打印部分日志

如何在片段着色器中平铺部分纹理

Wordpress - 将代码片段包含到布局的选定部分的插件

AJAX相关JS代码片段和部分浏览器模型