| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:补充 '_'不能出现在开头和结尾.我改成这样就ac了。In Reply To:注意事项大总结(附源代码) Posted by:gfedcba at 2009-01-14 22:20:02 > 共性:
> 1 、开头只能是小写字母
>
> 特性:
> 2、Java中不能出现_ Cpp中不能出现大写字母
>
> 3、Cpp中的_不能出现在结尾
>
> 4、Cpp中的_不能连续出现
>
> 格式:
>
> 5、数组的长度在100左右,如果直接输入输出,一定要开101;最后一个是用来存'\0'
>
> 6、题目上出现的这些黑体(加粗字):sample input #,一律不要打印出来。
>
> 技巧:
>
> 先判断输入的格式是Java 还是Cpp 还是Error的格式,然后再统一输出,这样子逻辑性比较强,易于分门另类处理,而且复杂度也只是O(n)而已。
>
>
> 总结:如果符合以上的条件,祝贺你,可以一次AC了!!!!
>
> #include <iostream>
> using namespace std;
>
> //Accepted 216K 16MS
>
> /**********************************************************************
> * 判断是否是Java格式
> **********************************************************************/
> bool IsJava(char *str, int n)
> {
> int i;
> if (!( str[0] >='a' && str[0]<='z') ) // 开头一定要是小写
> {
> return false;
> }
> for (i=1; i<=n-1; i++)
> {
> if (str[i]=='_') // 只要有_存在,那就不是Java
> {
> return false;
> }
> }
>
> return true;
> }
>
> /**********************************************************************
> * 判断是否是Cpp格式
> **********************************************************************/
> bool IsCpp(char *str, int n)
> {
>
> int i;
> if (!( str[0] >='a' && str[0]<='z') ) // 开头一定要是小写
> {
> return false;
> }
> for (i=1; i<=n-1; i++)
> {
> if (str[i]>='a' && str[i]<='z')
> {
> continue;
> }
> else if (str[i]=='_' && str[i-1]=='_') // 连续两个__
> {
> return false;
> }
> else if(i==n-1 && str[i]=='_') // 最后一个是_
> {
> return false;
> }
> else if (str[i]>='A' && str[i]<='Z')// 大写的时候
> {
> return false;
> }
> }
>
> return true;
>
> }
>
>
> /**********************************************************************
> * 将Java格式按照Cpp格式打印出来
> **********************************************************************/
> void JavaToCpp(char *str, int n)
> {
> int i=0;
> for (i=0; i<=n-1; i++)
> {
> if (str[i]>='A' && str[i]<='Z')
> {
> cout<<"_"<<char(str[i]+32);
> }
> else
> {
> cout<<str[i];
> }
> }
> cout<<endl;
> }
>
> /**********************************************************************
> * 将Cpp格式按照Java格式打印出来
> **********************************************************************/
> void CppToJava(char *str, int n)
> {
> int i=0;
> for (i=0; i<=n-1; i++)
> {
> if (str[i] == '_')
> {
> str[i+1] -= 32;
> }
> else
> {
> cout<<str[i];
> }
> }
> cout<<endl;
>
> }
>
> int main()
> {
> const int N=101;
> char str[N];
> // int n = 1;
> bool isJava;
> bool isCpp;
> // cout<<"sample input #"<<n<<endl; // 这些是题目上加了粗黑体的字,千万不要打印出来
> while (cin>>str)
> {
> isJava = IsJava(str, strlen(str));
> isCpp = IsCpp(str, strlen(str));
> // cout<<"sample output #"<<n<<endl;
> // n++;
> if (isJava==false && isCpp==false)
> {
> cout<<"Error!"<<endl;
> }
> else if (isJava==true && isCpp==false)
> {
> JavaToCpp(str, strlen(str));
>
> }
> else
> {
> CppToJava(str, strlen(str));
> }
> // cout<<"sample input #"<<n<<endl;
>
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator