关于 UVA - 11059 存在的疑惑
Maximum Product - UVA 11059 - Virtual Judge (vjudge.net)
--------------------------------------------------------------------------------------------------------
废话不多说,直接上我的错误代码!
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; const int maxn = 21; int main(){ int i,n,t=0; long long int sum; long long int data[maxn]; while(cin>>n&&n!=0){ sum=1; t++; for(i=1;i<=n;i++){ cin>>data[i]; } for(i=1;i<=n;i++){ if(data[i]>0){ sum=sum*data[i]; continue; } } printf("Case #%d: The maximum product is %lld.\n\n",t,sum); } return 0; }
附上 D-BUG
---------------------------------------------------------------------------------------------------------------
发现上面的错误代码在全为非正数时输出结果为1,
与0相悖!
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int maxn=21; int main(){ int i,j,k,n; int data[maxn]; long long int res,m; while(cin>>n){ int t=0; t++; for(i=1;i<=n;i++){ cin>>data[i]; } res=0; for(i=1;i<n;i++){ for(j=i;j<=n;j++){ m=1; for(k=i;k<=j;k++){ m*=data[k]; } if(res<m) res=m; } } printf("Case #%d: The maximum product is %lld.\n\n",t,res); } return 0; }
当输入 2
-9 9 时
结果输出的是0
AC:
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int maxn=21; int main(){ int i,j,k,n; int data[maxn]; int t=0; long long int res,m; while(cin>>n){ t++; for(i=1;i<=n;i++){ cin>>data[i]; } res=0; for(i=1;i<=n;i++){ for(j=i;j<=n;j++){ m=1; for(k=i;k<=j;k++){ m*=data[k]; } if(res<m) res=m; } } printf("Case #%d: The maximum product is %lld.\n",t,res); if(t) cout<<endl; } return 0; }
本文来自博客园,作者:小白兔奶糖, 侵权必究!!!







浙公网安备 33010602011771号