OpenJudge 2755

简介: 2755:神奇的口袋 Time Limit:10000msMemory Limit:65536kBDescription有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。

2755:神奇的口袋

Time Limit:
10000ms
Memory Limit:
65536kB
Description
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a 1,a 2……a n。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。
Input
输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a 1,a 2……a n的值。
Output
输出不同的选择物品的方式的数目。
Sample Input
3
20
20
20
//动态规划

#include<stdio.h>
 #include<string.h>
 int main()
 {
     int n,i;
     int num[50],a[30];
     scanf("%d",&n);
     for(i=0;i<n;i++)
         scanf("%d",&a[i]);
     memset(num,0,sizeof(num));
     for(i=0;i<n;i++)
     {
         int k=40-a[i];
         while(k>=0)
         {
             if(num[k]>0)
                 num[k+a[i]]+=num[k];
             k--;
         }
         num[a[i]]++;
     }
     printf("%d\n",num[40]);
     return 0;
 }
//AC,自己写的

#include <iostream>
#include <cstdlib>
#include <cstring> 
using namespace std;
int ch[25];
bool vis[25];
int ans,T;//Èç¹ûÈ«¾ÖÉùÃ÷Ϊcount£¬Ôò×ÜÌáʾundeclared£¬»»Á˾ͺÃÀ²£¬²»¶®£¡ 
void dfs(int cute,int j)
{
    int i,k;
    if(0==cute)
        ans++;
    else
    {
        for(i=j;i<T;i++)
        if(!vis[i])
        {
            vis[i] = true;           
            dfs(cute-ch[i],i+1);
            vis[i] = false;
        }
    }
}                
int main()
{
    int i,j,k;
    cin>>T;
    memset(ch,0,sizeof(ch));
    memset(vis,false,sizeof(vis));
    for(i=0;i<T;i++)
        cin>>ch[i];
    ans = 0;
    dfs(40,0);
    cout<<ans<<endl;
    //system("pause");
    return 0;
}
    

  

  

  

  

目录
相关文章
OpenJudge NOI 1.11 05:派
OpenJudge NOI 1.11 05:派
93 0
|
人工智能 数据安全/隐私保护
openjudge 螺旋加密
/*======================================================================== 25:螺旋加密 总时间限制: 1000ms 内存限制: 65536kB 描述 Chip和Dale发明了一种文本信息加密技术。
1448 0
|
人工智能 定位技术 C语言
openjudge-最好的草
http://noi.openjudge.cn/ch0108/17/ 总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  65536kB 描述 奶牛Bessie计划好好享受柔软的春季新草。
1782 0
openjudge-膨胀的木棍
http://noi.openjudge.cn/ch0111/09/ 总时间限制: 1000ms  内存限制: 65536kB 描述 当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n*C)*L,其中C是热膨胀系数。
1183 0
|
机器学习/深度学习 Windows
Openjudge计算概论-角谷猜想
/*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。
942 0
|
人工智能 算法
OpenJudge计算概论-字符串排序
/*====================================================================== 字符串排序 总时间限制: 1000ms 内存限制: 65536kB 描述 参考整数排序方法,设计一种为字符串排序的算法,将字符串从小到大输出 输入 第一行为测试数据组数t, 后面跟着t组数据。
827 0
OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: 65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10,想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在 S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。
1372 0
|
人工智能
OpenJudge计算概论-寻找山顶
/*===================================== 寻找山顶 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。
880 0
OpenJudge计算概论-细菌的战争
/*====================================================================== 细菌的战争 总时间限制: 1000ms 内存限制: 65536kB 描述 有两种细菌,一种是有害菌,繁殖能力很强,每小时会繁殖一倍;另一种是有益菌,繁殖能力较弱,每小时能繁殖百分之五。
769 0
OpenJudge计算概论-求平均年龄
/*============================================== 求平均年龄 总时间限制: 1000ms 内存限制: 65536kB 描述 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
1401 0