这个题不怎么难,就是当时没有理解到字典序的意思:我一直以为是自己元素间的比较,后再同学帮助下明白这里是与其他比,这样就很简单了。就是要求当前那个最小就可以了。
对这道题我有点吐槽明明自己都说了最后一组数据没有空行,但是最后AC后的代码还是有换行的!
#include<string.h>
//字典序理解有误,不是和自己元素比较而是与其他段
//比较同一下标,所以让当前最小就行
char s[11][11];
int main(){
int i,j,n,flag=0;
while(~scanf("%d",&n)){
memset(s,0,sizeof(s));
for(i=0;i<n;i++){
scanf("%s",s[i]);
//这样输入方便可以省去对换行的处理
//%s以换行或者空格结束
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(s[i][j]=='.'){
//找到最小
//因为不要相同所以能小就小
s[i][j]='A';
if(s[i][j+1]=='A'||s[i][j-1]=='A'||s[i-1][j]=='A'||s[i+1][j]=='A'){
s[i][j]='B';
if(s[i][j+1]=='B'||s[i][j-1]=='B'||s[i-1][j]=='B'||s[i+1][j]=='B'){
s[i][j]='C';
if(s[i][j+1]=='C'||s[i][j-1]=='C'||s[i-1][j]=='C'||s[i+1][j]=='C'){
s[i][j]='D';
if(s[i][j+1]=='D'||s[i][j-1]=='D'||s[i-1][j]=='D'||s[i+1][j]=='D')
s[i][j]='E';
}
}
}
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%c",s[i][j]);
}
printf("\n");
}
printf("\n");//感觉有问题
}
return 0;
}
标签:11,int,ZCMU,1101,比较,字典
From: https://www.cnblogs.com/hai-zei/p/18137017