Description给出N个整数,它们的范围是-100到100。从中选出k个整数,使它们的乘积达到最大。Input多个测试用例。每个测试用例有2行:第一行是两个整数N和K ( 1 ≤
K ≤ N ≤ 10 ),空格分隔;第二行是用空格分隔的N个整数。最后一个测试用例N=K=0,不用处理。Output每个测试用例输出一行:最大的乘积(测试数据确保答案不超过32位int的范围)。Sample Input4
21 7 2 05 3-5 -5 10 1 15 3-99 -67 0 0 00
0Sample Output142500我的代码:#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[12],i,j,n,k,min,d,c[12],l;
while(scanf("%d %d",&n,&k)!=NULL)
{
if(n==0&&k==0)break;
if(!(1<=k&&k<=10&&k<=n&&1<=n&&n<=10))break;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n-k+1;i++)
{ d=1;
for(j=0;j<k;j++)
d*=a[j+i];
c[i]=d;
}
min=c[1];
for(l=2;l<=n-k+1;l++)
if(min<c[l])min=c[l];
printf("%d\n",min);
}
return 0;
}
添加回答
举报
0/150
提交
取消