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
相关分类