/**给定一些氨基酸,组成与给定蛋白质质量相差最少
题目描述中规定了 min(A1,A2,......,AN)<=M,所以必定至少要使用一个氨基酸。
先脱水,朴素的01背包搞定
*/
#include<stdio.h>
#include<string.h>
#define N 2001
int mass[N];
bool dp[N];
int main()
{
int n,m,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
m-=18;
for(i=0;i<n;++i)
{
scanf("%d",&mass[i]);
mass[i]-=18;
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=0;i<n;++i)
{
for(j=(m<<1);j>=mass[i];--j)
dp[j]=dp[j]||dp[j-mass[i]];
}
for(i=0;;i++)
if(dp[m-i]||dp[m+i])
{
if(dp[m-i])
j=m+18-i;
else if(dp[m+i])
j=m+18+i;
br
csu 1248 非变性聚丙烯酰胺凝胶电泳
最新推荐文章于 2024-07-11 14:43:09 发布
这是一个使用C++编程解决生物化学问题的实例,涉及氨基酸组合与蛋白质质量计算。通过01背包算法,寻找氨基酸组合使得与给定蛋白质质量差距最小。程序读取氨基酸质量和数量,计算并输出最小差值。
订阅专栏 解锁全文
4229

被折叠的 条评论
为什么被折叠?



