细菌

题目描述

近期,农场出现了D(1≤D≤15)种细菌。Farmer John要从他的N(1≤N≤1000)头奶牛中尽可能多地选些产奶。但是如果选中的奶牛携带了超过K(1≤K≤D)种不同细菌,所生产的奶就不合格。请你帮助John计算出最多可以选择多少头奶牛。

输入输出格式

输入格式:

第一行,三个整数,N,D,K;

下面N行,第i行表示一头牛所携带的细菌情况。第一个整数di表示这头牛所携带的细菌种类数,后面di个整数表示这些细菌的各自种类标号。

输出格式:

一行,只一个数M,最大可选奶牛数。

输入输出样例

输入样例:
6 3 2
0 1 1 1 2 1 3 2 2 1 2 2 1
输出样例:
5

说明

样例说明:

选择:1,2,3,5,6,这样只有1#和2#两种细菌。

 

思路:牛过多,可以枚举细菌方案,再依次检测每头牛是否可取。

代码:

//程序名:新的C++程序
//作者: 

#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;
int d,n,r,t,k,anss,a[20],b[2000][20],p[2000],c[20],tt,e,l;
void cow()
{
    for(int i=1;i<=d;i++)
    {
        l=0;
        for(int j=1;j<=k;j++)
        {
            if(b[i][j]==1&&c[j]==0){l=1;break;}
        }
        if(!l)tt++;
    }
}
int main()
{
    cin>>d>>n>>r;
    if(n==r){cout<<d;return 0;}
    t=r;k=n;
    for(int i=1;i<=d;i++)
    {
        cin>>p[i];
        for(int j=1;j<=p[i];j++)cin>>e,b[i][e]=1;
    }
    for(int i=1;i<=r;i++)a[i]=i;
    for(;;)
    {
        for(int i=1;i<=k;i++)c[i]=0;
        for(int i=1;i<=t;i++)c[a[i]]=1;
        tt=0;
        cow();
        if(tt>anss)anss=tt;
        r=t;n=k;//个数和上限还原
        a[t]++;
        while(a[r]>n)//直到不用进位为止
        {
            a[r-1]++;
            r--;//末尾指针减少
            n--;//上限减少
        }
        if(a[0]!=0)break;
        for(int i=r+1;i<=t;i++)a[i]=a[i-1]+1;//如有进位再初始化
        
    }
    cout<<anss;
    return 0;
}
代码

 

转载于:https://www.cnblogs.com/2006hanziwei/p/10710118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
细菌觅食算法是一种模拟细菌生长和寻找食物的算法,可以用于解决优化问题。其基本原理是通过模拟细菌在环境中移动,寻找最佳的食物资源。 在细菌觅食算法中,我们首先定义了一个细菌集群,每个细菌都有一个位置和一个食物浓度的值。算法的步骤如下: 1. 初始化细菌集群:随机生成一定数量的细菌,并随机给每个细菌分配一个位置和食物浓度。 2. 移动细菌:根据细菌的位置和食物浓度,计算细菌的感知力和运动力,并在环境中移动细菌的位置。 3. 更新食物浓度:根据细菌的位置和环境中的食物分布情况,更新细菌的食物浓度。 4. 寻找最佳位置:在细菌集群中,选择食物浓度最高的细菌位置作为当前的最佳位置。 5. 重复步骤2至4,直到满足终止条件(如达到最大迭代次数或达到预设的收敛精度)。 通过实验和优化参数,细菌觅食算法可以在寻找最优解的过程中不断进化。它具有较强的全局搜索能力,能够在多维空间中找到局部最优解。 在Python中实现细菌觅食算法可以按照以下步骤进行: 1. 初始化细菌集群:生成一定个数的随机细菌,每个细菌包含位置和食物浓度属性。 2. 移动细菌:根据细菌的位置和食物浓度计算感知力和运动力,并在环境中移动细菌的位置。 3. 更新食物浓度:根据细菌的位置和环境中的食物分布情况,更新细菌的食物浓度。 4. 寻找最佳位置:选择食物浓度最高的细菌位置作为当前的最佳位置。 5. 重复步骤2至4,直到满足终止条件。 需要注意的是,在编写Python代码时,我们需要根据具体问题的要求来定义感知力、运动力、食物浓度等参数,并根据实际情况选择合适的终止条件。实现细菌觅食算法需要结合数学模型和计算实现,因此需要一定的算法和编程基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值