求助
查看原帖
求助
502983
jhhh楼主2024/10/25 19:23
#include<bits/stdc++.h>
using namespace std;
char s[3001][3001],s_maxx[3001][3001],s_minn[3001][3001];
int main() {
	freopen("dict.in","r",stdin);
	freopen("dict.out","w",stdout);
	int n,l;
	scanf("%d%d",&n,&l);
//	char s[n+1][l+1],s_maxx[n+1][l+1],s_minn[n+1][l+1];
	memset(s,0,sizeof(s));
	memset(s_maxx,0,sizeof(s_maxx));
	memset(s_minn,0,sizeof(s_minn));
	for(int i=1; i<=n; i++) {
		scanf("%s",s[i]);
		int dict[30];
		memset(dict,0,sizeof(dict));
		for(int j=0; j<l; j++) {
			dict[s[i][j]-'a']++;
		}

		int cnt=0;
		for(int j=1; j<=26&&cnt<l; j++) {
			if(dict[j]==0)continue;
			while(dict[j]>0) {
				s_minn[i][cnt]='a'+j;
				s_maxx[i][l-cnt-1]='a'+j;
				dict[j]--;
				cnt++;
			}
		}
	}
	
	for(int i=1; i<=n; i++) {
		bool flag=1;
		for(int j=1; j<=n; j++) {
			if(i==j)continue;
			if(strcmp(s_maxx[i],s_minn[j])==1) {
				flag=0;
				break;
			}
		}
		if(flag==1)putchar('1');
		else putchar('0');
	}
	return 0;
}

2024/10/25 19:23
加载中...