一道在CF上WA了9次才AC的A题题目与10个版本的代码代码
题目(题目链接:https://codeforces.com/problemset/problem/733/A):
One day, the Grasshopper was jumping on the lawn and found a piece of paper with a string. Grasshopper became interested what is the minimum jump ability he should have in order to be able to reach the far end of the string, jumping only on vowels of the English alphabet. Jump ability is the maximum possible length of his jump.
Formally, consider that at the begginning the Grasshopper is located directly in front of the leftmost character of the string. His goal is to reach the position right after the rightmost character of the string. In one jump the Grasshopper could jump to the right any distance from 1 to the value of his jump ability.

The picture corresponds to the first example.
The following letters are vowels: 'A', 'E', 'I', 'O', 'U' and 'Y'.
The first line contains non-empty string consisting of capital English letters. It is guaranteed that the length of the string does not exceed 100.
Print single integer a — the minimum jump ability of the Grasshopper (in the number of symbols) that is needed to overcome the given string, jumping only on vowels.
Examples
| input |
| ABABBBACFEYUKOTT |
| output |
| 4 |
| input |
| AAA |
| output |
| 1 |
版本1代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int index, ans;
while( ~scanf( "%s", Str ) )
{
index = ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
ans = index >= ans ? index : ans;
index = ;
}
}
//ans = index >= ans ? index : ans;
printf( "%d\n", ans );
}
return ;
}
版本2代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int index, ans;
while( ~scanf( "%s", Str ) )
{
index = ans = ;
if( strlen(Str) == && !( Str[] == 'A' || Str[] == 'E' || Str[] == 'I' || Str[] == 'O' || Str[] == 'U' || Str[] == 'Y' ) )
{
printf( "2\n" );
break;
}
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
ans = index >= ans ? index : ans;
index = ;
}
}
ans = index >= ans ? index : ans;
printf( "%d\n", ans );
}
return ;
}
版本3代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int index, ans;
bool flag;
while( ~scanf( "%s", Str ) )
{
flag = false;
index = ans = ;
if( strlen(Str) == && !( Str[] == 'A' || Str[] == 'E' || Str[] == 'I' || Str[] == 'O' || Str[] == 'U' || Str[] == 'Y' ) )
{
printf( "2\n" );
break;
}
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
ans = index >= ans ? index : ans;
index = ;
flag = true;
}
}
if( strlen(Str) > && !flag )
{
printf( "%d\n", strlen(Str) + );
break;
}
ans = index >= ans ? index : ans;
printf( "%d\n", ans );
}
return ;
}
版本4代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = i;
}
}
int tmp = ;
for( int i = ; i < index; i ++ )
{
if(vis[i])
{
///printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
///printf( "last = %d,\tL = %d\n", last, L );
printf( "%d\n", ans );
}
return ;
}
版本5代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = i;
}
}
int tmp = ;
for( int i = ; i < index; i ++ )
{
if(vis[i])
{
//printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
//printf( "\nlast = %d,\tL = %d\n", last, L );
printf( "%d\n", ans );
}
return ;
}
版本6代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = vis[index];
}
}
int tmp = ;
for( int i = ; i < index; i ++ )
{
if(vis[i])
{
//printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
//printf( "\nlast = %d,\tL = %d\n", last, L );
printf( "%d\n", ans );
}
return ;
}
版本7代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last, Tmp;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = i;
} }
int tmp = ;
for( int i = ; i <= index; i ++ )
{
if(vis[i])
{
///printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
///printf( "\nlast = %d,\tL = %d\n", last, L );
printf( "%d\n", ans );
}
return ;
}
版本8代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = i;
}
}
int tmp = ;
for( int i = ; i <= index; i ++ )
{
if(vis[i])
{
//printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
ans = max( vis[ index - ] - vis[ index - ], ans );
//printf( "\nlast = %d,\tL = %d,\tindex = %d\n", last, L,index );
printf( "%d\n", ans );
}
return ;
}
版本9代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
index ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[index] = i + ;
last = i;
}
}
int tmp = ;
for( int i = ; i <= index; i ++ )
{
if(vis[i])
{
//printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
if( index >= )
ans = max( vis[ index - ] - vis[ index - ], ans );
//printf( "\nlast = %d,\tL = %d,\tindex = %d\n", last, L,index );
printf( "%d\n", ans );
}
return ;
}
版本10代码:
#include <bits/stdc++.h> using namespace std; int main()
{
char Str[];
int vis[];
int index, ans, last, tot;
while( ~scanf( "%s", Str ) )
{
last = -;
memset( vis, , sizeof(vis) );
tot = index = ;
ans = ;
for( int i = ; Str[i] != '\0'; i ++ )///'A', 'E', 'I', 'O', 'U' and 'Y'.
{
tot ++;
if( Str[i] == 'A' || Str[i] == 'E' || Str[i] == 'I' || Str[i] == 'O' || Str[i] == 'U' || Str[i] == 'Y' )
{
vis[ index ++ ] = i + ;
last = i;
}
}
int tmp = ;
for( int i = ; i <= tot; i ++ )
{
if(vis[i])
{
//printf( "%d ", vis[i] );
ans = max( vis[i] - tmp, ans );
tmp = vis[i];
}
}
int L = strlen(Str);
ans = max( L - last, ans );
if( index >= )
ans = max( vis[ index - ] - vis[ index - ], ans );
//printf( "\nlast = %d,\tL = %d,\tindex = %d\n", last, L,index );
printf( "%d\n", ans );
}
return ;
}
其实为了解决这道水题,不止这10个版本的代码,还有中间经过测试后弃用的。归根结底,还是太菜了,能力太差,编程技术烂导致的。
图1 艰难的AC之路
一道在CF上WA了9次才AC的A题题目与10个版本的代码代码的更多相关文章
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- cf上分的失落->高兴->更失落
cf昨日做出一个题居然div2打了1800多名直接上分了...我原以为垂直落地但是....我现在1399差一分就能蓝名了啊啊啊啊,以后不一定会有这个水平的啊,给个蓝名体验卡不行吗,多加一分会死啊... ...
- 帮朋友 解决一道 LeetCode QJ上问题
引言 对于刷题,自己是没能力的. 最经一个朋友同事考我一道数组题 . 也许能当面试分享吧. 娱乐娱乐. 事情的开始是这样的. 前言 题目 截图 大概意思 是 在一个 数组中,找出其中两个不重复出现的元 ...
- One day one cf,Keep Wa away from me.
Codeforces Round #379 (Div. 2) A水,算字符个数 B水,贪心优先组成后者 C贪心尺取,以消耗排序change那个,然后贪心另一个 D对角线就是x0+y0 == x1+y1 ...
- 一道在输入上有坑点的LCS
原题连接 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&p ...
- CF上部分树形DP练习题
本次 5 道题均来自Codeforce 关于树形DP的算法讲解:Here 791D. Bear and Tree Jumps 如果小熊每次能跳跃的距离为1,那么问题变为求树上任意两点之间距离之和. 对 ...
- 关于一道面试题【字符串 '1 + (5 - 2) * 3',怎么算出结果为10,'eval'除外】
最近徘徊在找工作和继续留任的纠结之中,在朋友的怂恿下去参加了一次面试,最后一道题目是: 写一个函数,输入一个字符串的运算式,返回计算之后的结果.例如这样的: '1 + (5 - 2) * 3',计算出 ...
随机推荐
- windows 异步通知I/O模型与重叠I/O模型
一.异步IO模型(asynchronous IO) (1)什么是异步I/O 异步I/O(asynchronous I/O)由POSIX规范定义.演变成当前POSIX规范的各种早起标准所定义的实时函数中 ...
- Mike and gcd problem CodeForces - 798C
题目 (智商题 or 糟心的贪心) 题意: 有一个数列a1,a2,...,an,每次操作可以将相邻的两个数x,y变为x-y,x+y,求最少的操作数使得gcd(a1,a2,...,an)>1.gc ...
- 题解报告:hdu 1969 Pie(二分)
Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...
- 通过表单展示不一样的页面(input对象)
表单中包含不一样的样式,不同功能的提交数据的方式.在许多页面中,浏览者不经意间已经不断在使用表单的功能,如留言,设置自己的密码或者是复选框,下拉列表等. input对象下的多种表单表现形式: 通常在页 ...
- Backbone.js入门教程第二版笔记(3)
视图渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- Linux常用命令——tac、bc
1.从文件尾到文件头一页一页的显示内容 tac xxx.log |more //tac命令与cat命令相反,从文件尾开始读文件 2.shell下科学计算工具bc echo "scale=5; ...
- 可能是最漂亮的Spring事务管理详解 专题
微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允 ...
- .net服务端生成二维码
mvc4 net4.0 1.引用附件的DLL文件 2.两个函数即可 #region 生成二维码 public ActionResult getQrCode() { using (var ms = ...
- Mac OS OneDrive 无法同步.DS_Store文件 出错
Mac OS OneDrive 无法同步.DS_Store文件 同步出错 解决方案: 第一步:打开 terminal 窗口,到本地同步的目录下: cd "/Users/gkjglobal/G ...
- React-Native 开发问题整理
1.内嵌WebView,点击输入框后页面不自动上滚 <activity android:name=".MainActivity" android:label="@s ...