描述
众所周知,当前北林A坛不景气,自从几位学长“退役”以后,仍在A坛活跃的寥寥无几,众多著名高手或未知名高手都不重视ACM,或只将其作为加分的手段,偶尔参加几次月赛;或干脆避而远之,造成北林A坛一片凄惨的光景(有点夸张^_^)。为此,ben多次向Professor Wang提出振兴北林A坛的想法。Professor Wang和ben一致认为搭建北林自己的OJ系统是提升北林ACM影响力和竞赛水平的重要手段。可是搭建OJ需要解决许多问题,其中一个便是用户注册的问题。注册用户名是由字母、数字和下划线(_)组成,且开头字符必须是字母或下划线,中间不能有空格,字符数量不超过20个,而且系统中不能有重复的用户名。
输入
输入包含多组测试数据,每组测试数据首先包含一个正整数n(当n<=0时表示输入结束),接下来是n个字符串,表示输入的用户名。
输出
如果输入的用户名序列满足上述条件,请输出"Resonable!",否则请输出"UnResonable!"。假设每组输入前系统为空。每组输出占一行。
样例输入
3
libai
dufu
wangwei
2
1988
_young
3
_112358
ben
ben
样例输出
Resonable!
UnResonable!
UnResonable!
#include <iostream>
#include <string>
using namespace std;
bool match(string str){
if (str[0]!='_' && !(str[0]>=65&&str[0]<=90) && !(str[0]>=97&&str[0]<=122))
return false;
for (int i=1;i<str.length();i++)
if (str[i]!='_' && !(str[i]>=65&&str[i]<=90) && !(str[i]>=97&&str[i]<=122) && !(str[i]>=48&&str[i]<=57))
return false;
return true;
}
int main(){
int n,i,j;
string *name;
bool ifResonable;
while (cin>>n&&n>0){
name=new string[n];
ifResonable=true;
for (i=0;i<n;i++)
cin>>name[i];
for (i=0;i<n;i++){
if (name[i].length()>20 || !match(name[i])){
ifResonable=false;
break;
}
for (j=0;j<i;j++)
if (name[i].compare(name[j])==0){
ifResonable=false;
break;
}
if (!ifResonable)
break;
}
if (ifResonable)
cout<<"Resonable!"<<endl;
else cout<<"UnResonable!"<<endl;
delete [] name;
}
return 0;
}
。。为了写这个题快疯了。
因为最后的输出把Resonable拼错了。 ⊙﹏⊙b汗。
果真自己好弱好弱。。
而且用char*的话很容易就出现 使用非法内存。。
所以以后尽量还是string的干活。。
再者用变量建立“数组”啊。学习java的new空间。。