NYOJ-zb的生日

Posted 赤云封天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NYOJ-zb的生日相关的知识,希望对你有一定的参考价值。

 题目网址:http://acm.nyist.net/JudgeOnline/problem.php?pid=325

这道题解题的技巧类似NYOJ-1058部分和问题,就是代码第12行的位置:i 是从cur+1位置开始的。

这点是解决某一类问题的关键。此类题有一个共同之处就是:无序。拿这题来说就是:我从中选取一部分的数,

使得选中的和与剩下的和之差最小。我选中的这些数,不用管他的顺序怎么样,我直接从0位置开选就可以。如果

w[0]是问题解的一部分,那么我从剩下的再选即可。以w[0]为根的递归树中,再选择下一个可行的元素。

说的不怎么清晰,关键就一点:无序。才可以用这个技巧。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int N,M,sum;
 4 int w[50];
 5 int flag[50];
 6 int cha;
 7 
 8 void dfs(int cur,int sum_c){
 9     if(abs(sum - 2 * sum_c) < cha){
10         cha = abs(sum - 2 * sum_c);
11     }
12     for(int i = cur + 1; i < N; i++){
13         dfs(i,sum_c + w[i]);
14     }
15 }
16 
17 int main(void){
18     int i;
19     while(scanf("%d",&N) != EOF){
20         M = N;
21         sum = 0; cha = 20000;
22         for(i = 0; i < N; i++){
23             scanf("%d",&w[i]);
24             sum += w[i];
25         }
26         for(int j = 0; j < N; j++){
27             dfs(j,w[j]);
28         }
29         printf("%d\n",cha);
30     }
31     return 0;
32 }

 

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

关于生日的c++程序源代码

用Java的Date类输入一个人的生日并输出,求代码。

求生日快乐FLASH源码

c语言编程 同一天生日:在一个有200人的大班级中,存在两个人生日相同的概率非常大。。

烟花代码,情人节,情侣生日礼物代码适用

以及距他下一次生日的天数。是C语言,不是C++