问 C 风格的快写
  • 板块学术版
  • 楼主SilverLi
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/5/7 21:58
  • 上次更新2023/10/23 16:22:10
查看原帖
问 C 风格的快写
688783
SilverLi楼主2023/5/7 21:58

P1481

这样可以 AC。

#include <stdio.h>
#include <string.h>
int n,cnt,ans,t[10005][30],w[10005],u,res,i,l;
char s[10005];
int main() {
	scanf("%d",&n);
	while(n--) {
		scanf("%s",s);
		u=0,res=1,l=strlen(s);
    	for(i=0;i<l;++i){
    		if(!t[u][s[i]-'a'])t[u][s[i]-'a']=++cnt;
    		u=t[u][s[i]-'a'],res+=w[u];
    	}
    	++w[u];
		res>ans?ans=res:0;
	}
	printf("%d",ans);
	//while(ans)  putchar((char)ans%10+'0'),ans/=10;
	return 0;
}

但这样输出答案会 WA on #2

#include <stdio.h>
#include <string.h>
int n,cnt,ans,t[10005][30],w[10005],u,res,i,l;
char s[10005];
int main() {
	scanf("%d",&n);
	while(n--) {
		scanf("%s",s);
		u=0,res=1,l=strlen(s);
    	for(i=0;i<l;++i){
    		if(!t[u][s[i]-'a'])t[u][s[i]-'a']=++cnt;
    		u=t[u][s[i]-'a'],res+=w[u];
    	}
    	++w[u];
		res>ans?ans=res:0;
	}
	//printf("%d",ans);
	while(ans)  putchar((char)ans%10+'0'),ans/=10;
	return 0;
}
2023/5/7 21:58
加载中...