题意:王,皇后,车,象在棋面上从一个位置移动到另一个位置的最小次数
分析: 王
然后,这题让我WA了几遍的几个非常蛋痛的东西,就是由同一点移动到同一点,要输出"0 0 0 0"
贴下代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int
t
,
i;
cin
>>
t;
char
a
[
2
][
2
];
int b
[
2
][
2
];
int
x
,
y;
int
king
,
queen
,
car;
while(
t
--)
{
for(
i
=
0 ;
i
<
2 ;
i
++)
{
cin
>>
a
[
i
][
0
]
>>
a
[
i
][
1
];
b
[
i
][
0
]
=
a
[
i
][
0
]
-
'a'
+
1;
b
[
i
][
1
]
=
a
[
i
][
1
]
-
'0';
}
x
=
abs(b
[
1
][
1
]
-b
[
0
][
1
]);
y
=
abs(b
[
1
][
0
]
-b
[
0
][
0
]);
int
temp
=
0;
temp
= (b
[
0
][
0
]
+b
[
0
][
1
])
+(b
[
1
][
0
]
+b
[
1
][
1
]);
temp
%=
2;
king
=
x
>
y
?
x:
y;
if(
x
==
0
&&
y
==
0)
cout
<<
"00 0 0"
<<
endl;
else
{
if(
x
==
y||
x
==
0||
y
==
0)
//如果是在斜边上或者在一条直线上
queen
=
1;
else
queen
=
2;
if(
x
==
0||
y
==
0)
car
=
1;
else
car
=
2;
cout
<<
king
<<
""
<<
queen
<<
""
<<
car
<<
"";
if(
x
==
y)
//在同一个斜线上
cout
<<
1
<<
endl;
else
if(
temp
==
0)
//同颜色的移动
cout
<<
2
<<
endl;
else
cout
<<
"Inf"
<<
endl;
}
}
}
#include<cmath>
using namespace std;
int main()
{
}