2301 - 洛神
时间限制 : 1 秒
内存限制 : 128 MB
“仿佛兮若轻云之闭月,飘飘兮若流风之回雪”---《洛神赋》
HJY是个三国杀迷(卡牌类游戏),连做梦都会梦到在杀。一天晚上,他又在梦里打三国杀了,他最喜欢的一个武将是甄姬,因为她有个强大的技能,就是洛神。这个技能是在牌堆摸牌的时候可以把连续摸到的黑色牌拿走,如果摸到红色的牌就停止摸牌(这张红色的牌不能拿走),牌堆中只有黑色,红色这两种颜色的牌。由于在梦中,HJY通过意念知道了牌堆里的所有牌,而且他可以从牌堆的任何地方开始摸牌。现在,他想发动这个技能一次摸最多的牌,请机智的各位帮帮他吧!
题目输入
第一行一个整数T,表示有T组数据。每组数据有一个数n(1<=n<=100),代表牌的数量,然后接着有n个数(0或1),表示有n张牌,0代表红色,1代表黑色。
题目输出
对于每组数据,答案单独输出一行,为摸牌能摸到最多的牌的数量。
输入/输出样例
输入格式
3 2 1 0 2 0 0 3 1 1 1
输出格式
1 0 3
C语言解答
#include<stdio.h> int main() { int max,s,a[101],t,n,i; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); s=0; max=0; for(i=0;i<n;i++) { if(a[i]==1) s++; else { if(s>max) max=s; s=0; } } if(a[n-1]==1&&s>max) max=s; printf("%d\n",max); } }
C++解答
//{{{-------------------head file-------------------// //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <set> #include <map> #include <list> #include <cmath> #include <stack> #include <queue> #include <string> #include <vector> #include <bitset> #include <cstdio> #include <cassert> #include <climits> #include <cstring> #include <numeric> #include <iostream> #include <algorithm> #define pb push_back #define mp make_pair #define inst insert #define se second #define fi first #define sz(x) ((int)(x).size()) #define ForEach(i,c) for(__typeof((c).begin()) i = (c).begin();i != (c).end();i++) using namespace std; typedef long long LL; typedef vector<int> VI; typedef pair<int, int> PII; //}}}------------------end line--------------------// int main() { int T, n; cin >> T; while(T--) { cin >> n; vector<int> v(n); for(int i = 0; i < n; i++) cin >> v[i]; int len = v[0], ans = v[0]; for(int i = 1; i < n; i++) { if(v[i] == 1) { len++; ans = max(ans, len); } else { len = 0; } } cout << ans << endl; } return 0; }