这题数据最大18位,应该用Long long 粗心在几个地方(函数返回值,中间比较值max pro)用了Int,提交了好几次
#include<stdio.h> long long func(int *a,int head,int rear){//一开始用了int long long pro=a[head];//注意这里初值不能赋值为1 2\n 0 0这个通不过 if(head==rear) return a[head]; else for(int i=head+1;i<=rear;i++) pro*=a[i]; return pro; } int main(){ //freopen("test.out","w",stdout); int n,count=1; long long pro;//一开始用int 细心啊 while(scanf("%d",&n)!=EOF){ int a[n]; long long max=0; for(int i=0;i<n;i++){ scanf("%d",a+i); } for(int head=0;head<n;head++){ for(int rear=head;rear<n;rear++){//bug? pro=func(a,head,rear); if(max<pro){ max=pro; //printf("%d %d %d\n",head,rear,max); } } } if(max<0) max=0; printf("Case #%d: The maximum product is %lld.\n\n",count++,max); } return 0; }
时间: 2024-10-08 04:52:08