TLE求优化
查看原帖
TLE求优化
393934
zhicheng楼主2021/2/21 21:47
/*主要思想: 
	1:输入
	2:与前面的比较
	3:如果都不相同存进a数组-->--- 
	4:否则不存                  |
*/ //                            | 
#include<iostream>//             |
#include<cstdio>//               |
#include<cstring>//              |
using namespace std;//           |
char a[10010][110];//<--<---<--<--
bool pd(char x[],char y[]){    //判断是否是同类单词函数 
	int c[26]={},d[26]={},s=strlen(x),ss=strlen(y);
	if(s!=ss){
		return false;  //如果长度不一样直接返回false 
	}
	for(int i=0;i<=s-1;i++){
		c[x[i]-'A']++;  //}统计字母个数 
		d[y[i]-'A']++;  //}
	}
	for(int i=0;i<=25;i++){
		if(c[i]!=d[i]){
			return false;  //比较 
		}
	}
	return true;
}
int main(){
	int n,l=0,p;  //l是现有的组数,也是a里存的单词个数;p=strlen(a[l]);
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%s",a[l]);//输入 
		for(int j=0;j<=l-1;j++){//与前面的单词比较 
			if(pd(a[l],a[j])){//如果是一类 
				p=strlen(a[l]);
				for(int k=0;k<=p-1;k++){
					a[l][k]=0;     //清除 
				}
				--l;  //个数-1 
				break;
			}
		}
		++l;//个数+1(如果这个单词不是新的一类,+1就与上面 -1抵消了 ) 
	}
	cout<<l;//输出 
} 

只TLE第二个点。

这个代码能优化吗?

还是说我只能用sort。。。

2021/2/21 21:47
加载中...