帮忙看看,呵呵,我搞得有些头晕,想不出来还有什么反例能让它不输出.
对不礼貌的女生收钱......
我看25楼没什么错误啊.
25楼的这个程序不行吗?
#include<stdio.h>
#include<string.h>
#define M 257
char st[M];
int main()
{
int l,i,k;
int mark;
while(scanf("%s",st)!=EOF)
{
l=strlen(st);
k=0;
mark=0;
for(i=l-1;i>=0;i--)
if(st[i]>='p'&&st[i]<='z')
k++;
else if(st[i]=='N'&&k>=1) ;
else if((st[i]=='I'||st[i]=='C'||st[i]=='D'||st[i]=='E')&&k>=2)
k--;
else
{
mark=1;
break;
}
if(k!=1)mark=1;
if(mark==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
刚看到两位的帖子,抱歉。
工大的,http://acm.hit.edu.cn/ojs/overview.php?from=1000
另:25楼也不行,目前的都不行.我估计是在运行的时候没有输出,导致超时.不知道忽略了什么情况...
由题目可以知道
s->p~z
s->Ns
s->Css | Dss | Ess | Iss // 因为t也是句子,可用s代替
从第一个字符判断,遇到 C D E 或 I 调用两次 s 依次对后面的字符判断
不是 C D E I N 的字符,也不在p~z内,即是错误的句子
大体是这样的,程序没时间写了
int judge( )
{
switch(a[i])
{
case 'C': judge();
judge();
case '