SDUT第二次选拔赛 7-2魔镜与抽卡

7-2 魔镜与抽卡

Description

最近,billow和他的同学们迷上了一个名叫神源的游戏,因为他们都想抽出同样的某个角色,所以他们都因此而努力奋斗着。

SDUT第二次选拔赛 7-2魔镜与抽卡_第1张图片

由于这个游戏抽卡需要很多的资源,并且有可能抽不到自己想要的角色,所以为了自己的努力没有白费,他们准备找一些其他的可(xuan)靠(xue)的办法。于是他们拜托ws小朋友在哆啦AC梦那里借来了神奇的魔镜。对着这个魔镜念动咒语就能保证自己必定抽到。

但是因为这个角色至少抽到两次才能发挥作用,所以他们的需求比较复杂,因此要念动的咒语也会比较复杂。我们可以把咒语抽象为n行每行m个字符的字符矩阵。如果这个矩阵是上下对称的,那么魔镜就能保证小保底不歪。如果这个矩阵是左右对称的,那么魔镜就能保证在大保底之后能再抽出一个。如果这个矩阵是中心对称的,那么魔镜就能保证在石头用完之前必定能抽出两个。现在,ws小朋友给出了一个魔咒,他们想知道这个魔咒有什么效果。

Input

第一行输入两个数n,m 表示行数和列数 1≤n,m≤103

接下来n行,每行m个字符,表示字符矩阵。保证只有小写字母。

Output

输出1~3行。 如果这个字符矩阵上下对称,输出 "xiaobaodi!"(没有引号)。如果这个字符矩阵左右对称,输出"dabaodi!"(没有引号)。如果这个字符矩阵中心对称,输出"wuhu!"(没有引号)。如果满足多种对称,则按上下,左右,中心的顺序输出。如果都不是,输出"***,tuiqian!"(没有引号)。

Sample

Input1

3 5
abcde
fghij
abcde

Output1

xiaobaodi!

Input2

5 5
abcde
fghij
klmno
pqrst
uvwxy

Output2

***,tuiqian!

Input3

4 4
aaaa
aaaa
aaaa
aaaa

Output3

xiaobaodi!
dabaodi!
wuhu!

 分析一下

判断矩阵是否为左右对称,上下对称,中心对称。

设n行m列(字符串组从str[0]开始输入)

i代表行,j代表列

若上下对称则

str[i][j]==str[n-1-i][j]

若左右对称

str[j][i]==str[j][m-1-i]

若中心对称

str[i][j]==str[n-1-i][m-1-j]

#include 
#include 
#include
int main()
{
    int n,m,i,j,f1=1,f2=1,f3=1;
    char str[1000][1000];
    scanf("%d %d",&n,&m);
    for(i=0;i

这段代码还可以优化,但是目前没有思路。

你可能感兴趣的:(c语言,字符串)