• HDU 2660 Accepted Necklace


    此题的大意就是要制作一条项链,这个项链必须用k块石头来制作,且重量不能超过W,问所能制作项链的最大价值。

    此题数据很水,DFS完全暴力就能过。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #define MAX(A,B) (A>B?A:B)
     5 int n, k, W;//n块石头 制作一条项链所需要的宝石数量k 最大承受重量 W
     6 int v[35], w[35], ans;//每块石头的价值v[i] 重量w[i]
     7 
     8 void DFS(int Nstone, int whight,int value,int a)//现在已经拥有的宝石数量 现在项链的重量 现在项链的价值 判断第a块石头要或者不要
     9 {
    10     if(Nstone == k && whight <= W)//满足条件 取最大值
    11     {
    12         ans = MAX(value, ans);
    13         return ;
    14     }
    15     if(whight > W || a >= n || Nstone > n)//越界 退出
    16         return ;
    17     DFS(Nstone+1,whight+w[a],value+v[a],a+1);//要这块石头
    18     
    19     DFS(Nstone,whight,value,a+1);//不要这块石头
    20 }
    21 int main()
    22 {
    23     int Ncase, i;
    24     scanf("%d",&Ncase);
    25     while(Ncase--)
    26     {
    27         scanf("%d%d",&n,&k);
    28         for( i = 0; i < n; i++)
    29             scanf("%d%d",&v[i],&w[i]);;
    30         scanf("%d",&W);
    31         ans = 0;
    32         DFS(0,0,0,0);
    33         printf("%d
    ",ans);
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    storm中DAU实时计算方案
    冒泡排序
    跨域
    关于java面试题
    vue+npm+Element插件+路由
    Android云端APP
    js图片预览带进度条
    jQuery上传文件显示进度条
    SSM+form表单文件上传
    SSM批量添加数据
  • 原文地址:https://www.cnblogs.com/chenchengxun/p/3772793.html
Copyright © 2020-2023  润新知