ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest – ACM-ICPC)由国际计算机学界著名的ACM学会(Association for Computer Machinery)主办,是世界上规模最大、水平最高的国际大学生程序竞赛。每年举办一次。ACM成立于计算机诞生次年,是目前计算机学界中历史最悠 久、最具权威性的组织。
ACM国际性大学生程序设计竞赛自1970年开始,其宗旨是使大学生能通过计算机充分展示自己分析问题和解决问题的能力。参加本项比赛的选手至少需要掌握 计算机科学的常用算法,基本的计算理论,(如:离散数学,具体数学,组合数学基础),数据结构基础,程序设计语言(规定是C/C++或者是Java)。在 本项比赛中考察学生的不仅仅是能够完成指定任务的程序,更要求在完成程序的功能的基础之上提高程序的运行效率与空间占用率。从数学角度考虑,题目主要的方 向集中在工程数学,抽象数学很少涉及。一般题目都会给出要求和几组输入和输出作为程序设计的参考,也是检验程序正确性的标准之一。
为了能够让大家切实原汁原味的ACM-ICPC竞赛试题是什么样的,我们模仿该项赛事的出题风格为大家奉献一道具有启发性的好题。希望这题能成为大家投身 程序设计竞赛的良好开端。 题目描述如下:
Given a string of uppercase letters, is it possible to erase one or more characters to get the string 'BUAA'?
#include<stdio.h> #include<string.h> main() { int number,te; char a[102]; int i,j,k,r; int length; int flag; scanf("%d",&number); for(te=1;te<=number;te++) { flag=0; scanf("%s",&a); length=strlen(a); if(length<=4) { flag=0; } else { for(i=0;i<=length-4;i++) if(a[i]=='B') { for(j=i+1;j<=length-3;j++) if(a[j]=='U') { for(k=j+1;k<=length-2;k++) if(a[k]=='A') { for(r=k+1;r<=length-1;r++) if(a[r]=='A') flag=1; } } } } if(flag==1) printf("Case %d: Yes\n",te); else printf("Case %d: No\n",te); getchar(); } }