D. 连续最大积吗 为什么要留代码呢 因为我缝缝补补的就过了 也不知道咋回事
2016-03-12 19:16
393 查看
#include <iostream>
using namespace std;
int a[10005];
int main()
{
int n;
cin>>n;
int t=0;
while(n--)
{
int m;
cin>>m;
int i;
for(i=0;i<m;i++)
cin>>a[i];
int x=0,y=0,z=0,l;
for(i=0;i<m;i++)
{
if(a[i]==2) x=x+1;
if(a[i]==-2) y=y+1;
if(a[i]!=0) l=i;
if(a[i]==0||i==m-1&&x+y!=0)
{
if(y%2==0&&z<x+y) z=x+y;
if(y%2!=0&&x==0&&z<y-1) z=y-1;
if(y%2!=0&&x>0)
{
int j,c=0;
j=i-x-y;
if(j<0) j=0;
int q=0,w=0;
for(;j<i;j++)
{
c=c+1;
if(a[j]==-2)
{
w=x+y-c;
break;
}
}
c=0;
if(i==m-1&&a[i]!=0) j=i;
else j=i-1;
for(;j>=i-x-y;j--)
{
c=c+1;
if(a[j]==-2)
{
q=x+y-c;
break;
}
}
int h;
h=w>q?w:q;
if(z<h) z=h;
}x=0;
y=0;
}
}
t=t+1;
cout<<"Case #"<<t<<": "<<z<<endl;
}
return 0;
}
Time Limit: 1000ms
Memory Limit: 32768KB
64-bit integer IO format: Java class name:
Submit Status PID:
3550
小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢!
比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。
现在小明请你帮忙算出这个最大值。
第一行输入一个正整数T,表示总共有T组数据(T <= 200)。
接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。
对于每组数据,先输出Case数。
如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。
using namespace std;
int a[10005];
int main()
{
int n;
cin>>n;
int t=0;
while(n--)
{
int m;
cin>>m;
int i;
for(i=0;i<m;i++)
cin>>a[i];
int x=0,y=0,z=0,l;
for(i=0;i<m;i++)
{
if(a[i]==2) x=x+1;
if(a[i]==-2) y=y+1;
if(a[i]!=0) l=i;
if(a[i]==0||i==m-1&&x+y!=0)
{
if(y%2==0&&z<x+y) z=x+y;
if(y%2!=0&&x==0&&z<y-1) z=y-1;
if(y%2!=0&&x>0)
{
int j,c=0;
j=i-x-y;
if(j<0) j=0;
int q=0,w=0;
for(;j<i;j++)
{
c=c+1;
if(a[j]==-2)
{
w=x+y-c;
break;
}
}
c=0;
if(i==m-1&&a[i]!=0) j=i;
else j=i-1;
for(;j>=i-x-y;j--)
{
c=c+1;
if(a[j]==-2)
{
q=x+y-c;
break;
}
}
int h;
h=w>q?w:q;
if(z<h) z=h;
}x=0;
y=0;
}
}
t=t+1;
cout<<"Case #"<<t<<": "<<z<<endl;
}
return 0;
}
D. 连续最大积
Time Limit: 1000msMemory Limit: 32768KB
64-bit integer IO format: Java class name:
Submit Status PID:
3550
小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢!
比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。
现在小明请你帮忙算出这个最大值。
Input
第一行输入一个正整数T,表示总共有T组数据(T <= 200)。接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。
Output
对于每组数据,先输出Case数。如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。
Sample Input
2 2 -2 0 10 2 2 0 -2 0 2 2 -2 -2 0
Sample Output
Case #1: 0 Case #2: 4
相关文章推荐
- 用JAVA(Myeclipse)实现可视化日历
- C++第一次实验-5
- C#视频总结
- php中的魔术方法
- 由重载学习写C++(1)
- myeclipse常用快捷键总结
- java设计模式——结构型之组合模式
- PHP修改指定目录下的文件名
- C\C++动态申请内存用于存放二维数组
- C++第一次实验-4
- Eclipse IDE FOR JAVA常见错误
- Python学习笔记(一)
- C++STL之string
- programming review (c++): (1)vector, linked list, stack, queue, map, string, bit manipulation
- java枚举的使用
- 【C++】模版类实现普通类静态顺序表
- spring4整合quartz2定时器启动报:batch acquisition of 0 triggers
- python 实现用ISBN从豆瓣获取图书信息
- Spring使用util Schema
- Java 信号量 Semaphore 介绍