Description
给出N个整数,它们的范围是-100到100。从中选出k个整数,使它们的乘积达到最大。
Input
多个测试用例。
每个测试用例有2行:第一行是两个整数N和K ( 1 ≤ K ≤ N ≤ 10 ),空格分隔;第二行是用空格分隔的N个整数。
最后一个测试用例N=K=0,不用处理。
Output
每个测试用例输出一行:最大的乘积(测试数据确保答案不超过32位int的范围)。
Sample Input
4
2
1 7 2 0
5 3
-5 -5 10 1 1
5 3
-99 -67 0 0 0
0
0
Sample Output
14
250
0
我的代码:
#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;
}
蓝鸟渣渣
qq___524
随时随地看视频慕课网APP
相关分类