P9868 [NOIP2023] 词典
看题要没看懂就去推样例,想到有问题的地方就去推一下,别空想
40pts:
#include<bits/stdc++.h>
using namespace std;
int n,m,k[3005],k2[3005];
char s[3005];
int main(){
memset(k,127,sizeof(k));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%s",s);
for(int j=0;j<m;j++){
if(j==0){
k[i]=k2[j]=s[j]-'a';
}
else{
k[i]=min(k[i],s[j]-'a');
k2[i]=max(k2[i],s[j]-'a');
}
}
}
bool flag=1;
for(int i=1;i<=n;i++){
flag=1;
for(int j=1;j<=n;j++){
if(i==j) continue;
if(k[i]>=k2[j]){
flag=0;
cout<<0;
break;
}
}
if(flag){
cout<<1;
}
}
return 0;
}
错因:
k[i]=k2[j]=s[j]-'a';
k2[i]->k2[j]
100pts:
#include<bits/stdc++.h>
using namespace std;
int n,m,k[3005],k2[3005];
char s[3005];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%s",s);
for(int j=0;j<m;j++){
if(j==0){
k[i]=k2[i]=s[j]-'a';
}
else{
k[i]=min(k[i],s[j]-'a');
k2[i]=max(k2[i],s[j]-'a');
}
}
}
bool flag=1;
for(int i=1;i<=n;i++){
flag=1;
for(int j=1;j<=n;j++){
if(i==j) continue;
if(k[i]>=k2[j]){
flag=0;
cout<<0;
break;
}
}
if(flag){
cout<<1;
}
}
return 0;
}