杭电ACM2191,我的代码错哪了,为啥WA?

#include<stdio.h>intmain(void){inti,C,j,m,n,t,s,p[110],h[110],c[110];scanf("%d",&C);w... #include <stdio.h>
int main(void)
{
int i,C,j,m,n,t,s,p[110],h[110],c[110];
scanf("%d",&C);
while(C--)
{
scanf("%d%d",&n,&m);
if(n<=0&&n>100&&m<=0&&m>100) break;
for(i=1;i<=m;i++)
scanf("%d%d%d",&p[i],&h[i],&c[i]);
for(i=1;i<=m;i++)
for(j=i+1;j<=m;j++)
if(p[i]>p[j])
{
t=p[i];p[i]=p[j];p[j]=t;
t=h[i];h[i]=h[j];h[j]=t;
t=c[i];c[i]=c[j];c[j]=t;
}
s=0;
for(i=1;i<=m;i++)
{
if(n-p[i]*c[i]>0)
{
s+=h[i]*c[i];
n=n-p[i]*c[i];
}
else
{
s+=n/p[i]*h[i];
break;
}
}
printf("%d\n",s);
}
return 0;
}
展开
 我来答
百度网友c19c0d0
2011-10-02 · TA获得超过1537个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:446万
展开全部
楼主用的是贪心吧。。
你橘哪的算法错了,
这题大米不能分割,所以不能用贪心。
这题得用背包。如果不会的话,可以去百度搜下资料。。

我的AC代码。凳迹。
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
#define N 1005
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
int dp[N][N];
int main()
{
int t;
int i,j,k,am,a;
int n,m;
int max;
int vol[N],val[N],nn[N];
cin>>t;
while(t--)
{
cin>>m>>n;
for(i=1;i<=n;i++)
cin>>vol[i]>>val[i]>>nn[i];
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
for(j=m;j>=0;j--)
{
max=-1;
for(k=0;k<=nn[i]&&k*vol[i]<=j;k++)
max=Max(max,dp[i-1][j-k*vol[i]]+k*val[i]);
dp[i][j]=max;
}
cout<圆粗码<dp[n][m]<<endl;

}
return 0;
}
科博尔
2024-10-31 广告
QT400-18是一种球墨铸铁材料,QT代表“球铁”,400表示其抗拉强度为400MPa,18则表示延伸率为18%。该材料属于铁素体型球墨铸铁,具有良好的韧性和塑性,能够承受高冲击振动及扭转等动、静载荷,特别在低温工作条件下具有较好的冲击性... 点击进入详情页
本回答由科博尔提供
康运浩VD
2011-09-22 · TA获得超过312个赞
知道小有建树答主
回答量:762
采纳率:100%
帮助的人:460万
展开全部
#include<stdio.h>
#include<string.h>
void main()
{
char s[51];
int m,i,j,n,t;
while(scanf("%d%*c"模颤,&m)==1)
{
for(i=0;i<旦哗败m;i++)
{
gets(s);
n=strlen(s);
if(n<8 || n>16)
{
printf("NO\芦搭n");
continue; // 粗心大意啊,应该是continue的说
}
else
{
t=0;
for(j=0;j<n;j++)
{
if((s[j]>='a') && (s[j]<='z'))
{
t++;
break;
}
}
for(j=0;j<n;j++)
{
if((s[j]>='A') && (s[j]<='Z'))
{
t++;
break;
}
}
for(j=0;j<n;j++)
{
if((s[j]>='0') && (s[j]<='9'))
{
t++;
break;
}
}
for(j=0;j<n;j++)
{
if((s[j]=='~') || (s[j]=='!') || (s[j]=='@') || (s[j]=='#') || (s[j]=='$') || (s[j]=='%') || (s[j]=='^'))
{
t++;
break;
}
}
if(t<3)
printf("NO\n");
else
printf("YES\n");
}

}
}
}
追问
你搞错题目了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式