zoukankan      html  css  js  c++  java
  • 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
    ",cha);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    ASP.NET程序中常用的三十三种代码
    uri
    用XML保存和读取图片
    location
    访问相关节点
    onkeyup,onkeydown,onkeypress
    Asp.net中Server.Transfer,Server.Execute和Response.Redirect的区别
    关于window.showModalDialog()返回值的学习心得
    WP7数据绑定
    hdu 1568
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5609181.html
Copyright © 2011-2022 走看看